2015-09-03 3 views
-2

Я хочу цифровую подпись, например, под кодом: Sign [publickey, a || b].Создание цифровой подписи с DSA

Integer a; 
String b,c; 
a=12; b= "i am fine"; 
c=a+b; 
Signature DSA = Signature.getInstance(c, "SUN"); 
DSA.initSign(pvKey); 
+0

Вам нужен секретный ключ, чтобы что-то подписать. В чем проблема с вашим кодом? Любые ошибки? Ведет ли он себя иначе, чем вы этого хотите? –

+0

pvkey - это мой личный ключ, и я хочу получить значение моего хранилища подписи в переменной через клиентскую розетку. – Khan

+0

Я думаю, что мой ответ может указать вам в правильном направлении, но вы должны предоставить значительно больше деталей в своем исходном вопросе. Какой результат вы ожидали? Какой результат вы получили? Вы получили сообщение об ошибке? Если да, то что это было? Как вы получаете значение pvKey? Не используйте имена переменных, такие как 'a',' b' или 'c', вместо этого дайте им описательные имена. – Gray

ответ

0

"12iamfine" не является допустимым параметром для Signature.getInstance(). Вам нужно передать имя алгоритма, а не данные, которые вы хотите подписать (я предполагаю, что это то, что c ...).

Я кратко код из следующего блога для создания подписи: https://compscipleslab.wordpress.com/2012/11/18/generating-verifying-digital-signatures/

//Create a KeyPairGenerator object for generating keys for the DSA signature algorithm. 
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN"); 

//Instantiate SecureRandom Object, which will act as a source of random numbers. 
//Here, we use SHA1PRNG 
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN"); 

//Initialize the KeyPairGenerator with the key-length and the source of randomness 
keyGen.initialize(1024, random); 

//Generate the key-pair 
KeyPair pair = keyGen.generateKeyPair(); 

//Collect the public & private key from the KeyPair into separate objects 
PrivateKey privkey = pair.getPrivate(); 
PublicKey pubkey = pair.getPublic(); 

//Create a Signature object, you have to supply two arguments,first the algorithm 
//name & the provider. Here we use SHA1withDSA supplied by the SUN provider 
Signature dsa = Signature.getInstance("SHA1withDSA", "SUN"); 

//Initialize it with the private key before using it for signing. 
dsa.initSign(privkey); 

//Supply the Signature Object the data to Be Signed 
BufferedInputStream bufin = new BufferedInputStream(new FileInputStream(inputfile)); 
byte[] buffer = new byte[1024]; 
int len; 

while ((len = bufin.read(buffer)) >=0) { 
    dsa.update(buffer, 0, len); 
} 

bufin.close(); 

//Sign the data i.e. generate a signature for it 
byte[] realSig = dsa.sign();