Javascript md5 和 Java md5 帶中文字符加密結果不一致,可以通過編碼進行轉化。
javascript可以使用encodeURLComponent將中文先轉化一次再進行MD5加密。同樣的,java后面也應該用在后台再進行一次編碼后進行MD5加密。
但是這樣還是會出問題。
為什么呢?
javascript中的encodeURLComponent編碼方式能解密: ’%21' 為 '!' ,')','%28' 為 '(', '%29' 為 ')' 。
但是不會編碼 '(' , ')' , '!' 和'*'.而java編碼后會將 '!' 轉化為'%21',')','(' 轉化為'%28',')' 轉化為'%29' 。
因此轉化數據前需要在用js再relpace掉所有的 '(' , ')' , '!' ,替換成對應的編碼字符。
注:上述的符合均為英文狀態下的 '(',')','!'。