2011-12-16 4 views
2

может кто-нибудь объяснить мне, как подписать строку или массив байтов, используя закрытый ключ? ПОЖАЛУЙСТА. две недели я пытаюсь добиться этого. У меня есть код:знак строки с закрытым ключом

private static byte[] createSignature(byte[] file) { 
    byte[] signature = null; 

    try { 
     java.security.KeyStore keyStoreFile = java.security.KeyStore 
       .getInstance("PKCS12"); 
     keyStoreFile.load(new FileInputStream("keyStore.pfx"), 
       "password".toCharArray()); 

     // nuskaitomas privatus raktas iš failo 
     PrivateKey privateKey = (PrivateKey) keyStoreFile.getKey(
       "alais", "password".toCharArray()); 

     Signature dsa = Signature.getInstance(SHA1withRSA); 
     dsa.initSign(privateKey); 
     dsa.update(file, 0, file.length); 
     signature = dsa.sign(); 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return signature; 
} 

, но это просто подпись. .

+1

Этот код даст вам подпись. Вы должны проверить это с помощью открытого ключа. Что еще тебе нужно? – Thilo

+0

Что вы подразумеваете под «но это всего лишь подпись»? ваш код, кажется, делает то, о чем вы просили. пожалуйста, уточните, если вы имеете в виду что-то еще – Neal

+0

спасибо всем. Я должен опубликовать две переменные: 1.signed data (string) с использованием закрытого ключа и 2.signature. Тогда я не понимаю разницы. Что это? – innspiron

ответ

0

Изменить обратную подпись; вместо этого:

byte[] encryptedByteValue = Base64.encodeBase64(signature); 
return new String(encryptedByteValue, "UTF-8"); 
0

С примером кода вы генерируете подпись входных данных.

Если вы хотите вернуть данные в зашифрованном виде, вы можете использовать асимметричное (или симметричное) шифрование.

В вашем случае вы можете вернуть данные, зашифрованные с помощью PrivateKey: , вы можете найти пример here.

Смежные вопросы