当前位置:   article > 正文

java aes 中文_java实现AES加密(解决中文解密后乱码问题,解决传输字符串后解密报错的问题)...

java aes解密乱码

在对安全性要求比较高的报文做加密的时候,算法有很多种,我这里主要用到的就是AES加密算法。由于在国内使用,所以不可避免的要对中文进行加密和解密,而在这个过程中,发现,如果不做处理,很容易会出现中文乱码。

下面是常见的情况:

一、中文乱码

不对密码进行编码处理

byte[] decryptResult = decrypt(encryptResult, password);

System.out.println("解密后:" + new String(decryptResult));

运行后

加密前:我是shoneworn

解密后:鎴戞槸shoneworn

二、对文字进行编码处理,但是在传输过程中草率的将byte[]转成String, String code = new String(bytes); 由于AES加密算法要求密文是16位的倍数。所以,这么处理,在解密的时候,就会报各种错。比如下面的。

String code = new String(encryptResult);

byte[] decryptResult = decrypt(code.getBytes(), password);

结果就.........

加密前:我是shoneworn

javax.crypto.BadPaddingException: Given final block not properly padded

at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:966)

at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:824)

at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:436)

at javax.crypto.Cipher.doFinal(Cipher.java:2165)

at com.ailin.test.AES.decrypt(AES.java:72)

at com.ailin.test.AES.main(AES.java:173)

Exception in thread "main" java.lang.NullPointerException

at java.lang.String.(Unknown Source)

at com.ailin.test.AES.main(AES.java:174)

三、给功能正常的,能传中文的,不报错的AES加密加密算法源码

package com.ailin.test;

import java.io.UnsupportedEncodingException;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/717470
推荐阅读
相关标签
  

闽ICP备14008679号