首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES加密-解密不能正常工作-Android

AES加密-解密不能正常工作-Android
EN

Stack Overflow用户
提问于 2017-02-10 16:12:26
回答 1查看 680关注 0票数 0

我想用RSA加密一个任意的文本,但正如我读到的,RSA不允许长文本,所以首先,我需要用AES-256加密(例如),然后用RSA公共加密AES密钥,添加加密文本(用AES),并发送消息。

目前,我正在执行AES enc-dec。但是我做错了一些事情,因为没有正确地解密消息:

首先,我生成AES密钥:

代码语言:javascript
复制
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(KEY_SIZE_AES);
this.secretKey_AES = keyGenerator.generateKey();
return this.secretKey_AES;

然后我加密消息:

代码语言:javascript
复制
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;

最后我解密了它:

代码语言:javascript
复制
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;

但解密后的文本与原始文本不同。我漏掉了什么吗?或者我忘了什么步骤?

示例:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 16:28:08

您的代码工作正常,但您是在BASE64中对结果进行编码。("Elias"在base64中是"RWxpYXM" )。只要改变就好

代码语言:javascript
复制
 String decryptedMessage = new String(Base64.encode(decrypted, Base64.DEFAULT));

使用

代码语言:javascript
复制
String decryptedMessage = new String(decrypted, "UTF-8");

请注意,此方法仅适用于文本字符串

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42154479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档