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

本文探讨了JavaScript与Java中MD5加密处理中文字符时出现的不一致性问题,并提供了相应的解决方案,包括如何通过编码转换来确保两种语言的加密结果一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

 

但是这样还是会出问题。

 

为什么呢?

 

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

 

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

 

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

 

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

转载于:https://www.cnblogs.com/zzd0916/p/8327995.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值