问题描述
我们正在开发并使用Ionic 3 Native AES 256算法来加密数据,加密数据的输出不是密文格式(24字节)的有效格式。这样我们就不能在Java程序端解密。我们的中间件团队也使用AES/GCM/nopadding
,而离子本机插件则使用AES/CBC/PKCS5PADDING
,因此我们无法在基于Java的中间件方面解密数据。请提出建议,我们该如何处理。
ionic docs:https://ionicframework.com/docs/v3/native/aes256/
解决方法
正如您在有关此主题的第一个问题中所述 (ionic v3 AES 256 algorithm to using encrypted not able to decrypt in java AES/GCM/noPadding algorithm)我使用以下数据运行离子加密:
password = "test@123"
plaintext = "Test1234"
and received a Base64-encoded ciphertext string like "izMYpAIMvsCKIVjiNztsrA=="
(由于加密密钥和iv是使用随机元素生成的,因此结果会有所不同。)
将此密文字符串解码回字节数组,我得到的(字节数组)长度为16而不是24(必须始终为16的倍数),所以当长度为24时加密运行不正常!
第二:无法使用不同的AES模式-ionic只支持必须在中间件解密中使用的CBC模式。如果您需要使用“ GCM”模式之类的经过身份验证的加密,则必须使用其他库。