解决Javascript md5 和 Java md5 中文加密后不同问题

Javascript md5 和 Java md5 带中文字符加密结果不一致,可以通过编码进行转化。

 

javascript可以使用encodeURLComponent将中文先转化一次再进行MD5加密。同样的,java后面也应该用在后台再进行一次编码后进行MD5加密。

 

但是这样还是会出问题。

 

为什么呢?

 

javascript中的encodeURLComponent编码方式能解密: ’%21' 为 '!' ,')','%28' 为 '(', '%29' 为 ')' 。

 

但是不会编码 '(' , ')' , '!' 和'*'.而java编码后会将 '!' 转化为'%21',')','(' 转化为'%28',')' 转化为'%29' 。

 

因此转化数据前需要在用js再relpace掉所有的 '(' ,  ')' ,  '!' ,替换成对应的编码字符。

 

注:上述的符合均为英文状态下的 '(',')','!'。

posted @ 2018-01-22 11:01  进击的小牛牛  阅读(3257)  评论(0编辑  收藏  举报