我在aes encryption program的c中实施AES算法 而且我们在java中编写AES程序,在生成加密数据时出现的问题都不同。 输入文字:358960040119672 关键:mlabs
输出: 1.通过java(android):“vcpBspcYHtjlMgbQJI3aWg ==” 2.通过c:“`Äç©õ#«0Z”÷>ý“
为什么这个特殊的字符。显示在c。怎么处理这个?
答案 0 :(得分:1)
Java输出在加密后使用Base64算法进行编码,而C则没有。
答案 1 :(得分:0)
问题可能是填充和转换。将数据转换为字节(例如十六进制),因为128位加密的结果是任何值的18个八位字节(甚至是不可打印的ASCII字符)。确保双方使用相同的填充。
AES 128位定义为CHIPERTEXT [16个八位字节] = AES(KEY [16个八位字节],PLAIN [16个八位字节]))并且没有使用字符串的约定。