1

I have the following code that signs some String data:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
keyGen.initialize(1024, random);
KeyPair pair = keyGen.generateKeyPair();
PrivateKey privateK = pair.getPrivate();
PublicKey publicK = pair.getPublic();

Signature dsa = Signature.getInstance("SHA1withDSA");
dsa.initSign(privateK);
dsa.update(data.getBytes());

byte[] signature = dsa.sign();
String hexSignature = DatatypeConverter.printHexBinary(signature);
String hexPublicK = DatatypeConverter.printHexBinary(publicK.getEncoded());

However, it's giving me a varying public key size and signature size. For example,

enter image description here

Why is that? I want both the public key and the signature produced for some data to have fixed sizes.

Thank you for your help!

MooMooCoding
  • 319
  • 1
  • 5
  • 15
  • Additional 0 bytes may be required for certain values to prevent interpretation as negative value. – mkl May 15 '16 at 11:05

0 Answers0