最近我有一些文件从远程连接作为加密文件传输并加载到运行时解密的Android应用程序上。我发现这里有完全相同的解密代码和密钥。不幸的是它是Java,因此我不熟悉,我没有加密经验。该模块的链接在这里
https://github.com/fukata/AES-256-CBC-Example/blob/master/java/src/AESUtil.java
加密示例在这里 https://zerobin.net/?c5fd41740c9301ef#iNG7oNExRZwK4hBEKP7ZORDBj1fcPZxyjLQZeAihGZ8=
我一直试图通过使用VB.NET中的AES实用程序来解密它,但遗憾的是它似乎不起作用。所以我的问题是AES加密方法不同于语言? IE是由Java中的AES编码的,与VB.NET中的不同 - 这意味着我必须直接翻译java代码?
谢谢!
答案 0 :(得分:2)
您必须使用逐位相同的密钥和初始化向量以及相同的块链接模式,但除此之外,编写加密算法的语言无关紧要。
答案 1 :(得分:0)
“AES加密是否因语言而异?”号
aes只是一种算法(计算指令)。 aes可能有一个参考实现,但它没有“只有一个正确的标准化实现”。
任何语言的aes实现都可能略有不同。例如,在vb.net中,您通常会使用“Byte”作为aes实现中无符号数的类型。但是java没有无符号数据类型,因此您必须转换表示负数的字节以避免编码问题。但是你没有改变真正的加密算法。因此,您可以使用任意语言的aes实现来加密数据,并使用另一种语言编写的aes实现对其进行解密。如果这不起作用,其中一个实现是有缺陷的。