Hi guys... I'm implementing a quite simple cryptographic algorithm , but I keep on getting this exception : java.security.InvalidKeyException: Invalid key length: 444 bytes at com.sun.crypto.provider.DESCipher.engineGetKeySize(DashoA12275) at javax.crypto.Cipher.init(DashoA12275) Please note that I have JCE working correctly.. Now I'll post and explain my code :
I have a byte buffer , which lengh is 304 bytes. I have a Certificate retrieved from local keystore ,from which I get corresponding PublicKey. Then I retrieve Private Key from same keystore (passing a password) I have to create the digital signature of that buffer (and it works correctly) :
PrivateKey priv = sp.getPrivate(); Signature sig = Signature.getInstance(priv.getAlgorithm());//create a Signature instance sig.initSign(priv); sig.update(BIGBUFFER, 0, BIGBUFFER.length); byte C_FINAL=sig.sign();//returns the signature result in a byte array
In the second part of the algorithm I have to encrypt the byte array C_FINAL , using the PUBLIC KEY ..... but while executing the following code I get the InvalidKeyException
Cipher CPHR = Cipher.getInstance("DES/ECB/PKCS5Padding"); Certicate id=sp.getId();//retrieve certificate from another class PublicKey PUB_KEY=id.getPublicKey();//retrieve public key from certificate
CPHR.init(Cipher.ENCRYPT_MODE, PUB_KEY);//this line throws the exception....
C_FINAL = CPHR.doFinal(C_FINAL);
Please,anybody knows how to solve this problem..? Thanks a lot guys... bye