我想用RSA加密一个任意的文本,但是在我读的时候,RSA不允许长文本,所以首先,我需要用AES-256加密(例如),然后使用RSA public加密AES密钥,添加加密文本(使用AES)并发送消息。AES加密解密工作不正常 - 安卓
此刻,我正在做AES enc-dec。但我做错了什么,因为没有正确解密消息:
首先我产生AES密钥:
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(KEY_SIZE_AES);
this.secretKey_AES = keyGenerator.generateKey();
return this.secretKey_AES;
然后我加密消息:
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey_AES);
byte[] encrypted = cipher.doFinal(message.getBytes("UTF-8"));
String encryptedMessage = Base64.encodeToString(encrypted, Base64.DEFAULT);
return encryptedMessage;
最后我解密它:
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey_AES);
byte[] decrypted = cipher.doFinal(Base64.decode(message,Base64.DEFAULT));
String decryptedMessage = new String(Base64.encode(decrypted, Base64.DEFAULT));
return decryptedMessage;
但是解密后的文本与原来的不一样。我错过了什么? 或者我忘了一些步骤?
例子:
'Cipher.getInstance( “AES”);'使用缺省值是便携的常见原因问题。始终提供完整的“alg/mode/padding”规范。 –
谢谢,我会在星期一改变;) – Shudy