HarmonyOS 鸿蒙Next中求助:我想AES密钥进行base64编码,再用RSA对这个base64的字符串进行加密,但是现在解密之后AES是乱码的

HarmonyOS 鸿蒙Next中求助:我想AES密钥进行base64编码,再用RSA对这个base64的字符串进行加密,但是现在解密之后AES是乱码的

我先获取的AES然后进行编码,我后端进行解码是先rsa解密,成功拿到了base64字符串,但是再对base64解码的时候AES是乱码的,有没有大佬能告知一下我该怎么获取AES字符串,还是我那个地方写错了,代码在图片后面

cke_149.png

import { AES, Base64Util, CryptoHelper, PreferencesUtil, RSA } from '@pura/harmony-utils';
let symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES256"); //创建对称密钥生成器
let symKey = symKeyGenerator.generateSymKeySync(); //获取该对称密钥生成器随机生成的密钥
// 获取aes密钥之后对他进行base64编码
let aaa = Base64Util.encodeToStrSync(symKey.getEncoded().data)
let bbbb = CryptoHelper.strToDataBlob(aaa, "base64")
// 对base64编码之后的数据再次rsa加密
let encryptDataBlob = RSA.encryptSync(bbbb, keyPair.pubKey); //加密
// 加密两次的头
let encryptStr = CryptoHelper.dataBlobToStr(encryptDataBlob, 'base64');

更多关于HarmonyOS 鸿蒙Next中求助:我想AES密钥进行base64编码,再用RSA对这个base64的字符串进行加密,但是现在解密之后AES是乱码的的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

思路错了。对称加密后是可以解密的,非对称加密后是不能解密的

更多关于HarmonyOS 鸿蒙Next中求助:我想AES密钥进行base64编码,再用RSA对这个base64的字符串进行加密,但是现在解密之后AES是乱码的的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,使用AES密钥进行base64编码后再用RSA加密,解密后出现乱码可能涉及以下问题:

  1. RSA加解密时未正确设置填充模式,鸿蒙Next的RSA默认使用PKCS1填充
  2. Base64编解码过程出现错误
  3. AES密钥长度不匹配(需确保128/192/256位)

检查点:

  • 确认RSA加解密使用相同密钥对
  • 验证base64编解码前后数据一致性
  • 确保AES密钥原始数据正确

典型解决方案是使用华为提供的HUKS API进行密钥管理操作。

根据你的代码和描述,问题可能出在AES密钥的编码处理环节。以下是关键点分析:

  1. 你正确生成了AES256密钥并进行了Base64编码
  2. RSA加密/解密过程看起来是正常的
  3. 乱码可能出现在Base64解码后的密钥处理上

建议检查以下代码环节:

  1. 确保后端RSA解密后得到的Base64字符串与前端发送的完全一致
  2. 在后端解码时,确认Base64解码后的字节数组长度是32字节(AES256要求)
  3. 检查前后端的Base64编解码标准是否一致(如是否包含换行符等)

可以尝试在后端添加调试输出:

// 解密后先打印Base64字符串
System.out.println("Decrypted Base64: " + base64Str); 
// 解码后打印字节数组长度
byte[] keyBytes = Base64.getDecoder().decode(base64Str);
System.out.println("Key length: " + keyBytes.length);

如果长度不是32字节,说明密钥生成或传输过程有问题。

回到顶部