我想用RSA加密一个任意的文本,但正如我读到的,RSA不允许长文本,所以首先,我需要用AES-256加密(例如),然后用RSA公共加密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;但解密后的文本与原始文本不同。我漏掉了什么吗?或者我忘了什么步骤?
示例:

发布于 2017-02-10 16:28:08
您的代码工作正常,但您是在BASE64中对结果进行编码。("Elias"在base64中是"RWxpYXM" )。只要改变就好
String decryptedMessage = new String(Base64.encode(decrypted, Base64.DEFAULT));使用
String decryptedMessage = new String(decrypted, "UTF-8");请注意,此方法仅适用于文本字符串
https://stackoverflow.com/questions/42154479
复制相似问题