md5加密 前后端不一致问题

40 阅读1分钟

md5加密 前后端不一致问题

java实现:

String key = Md5EncordUtil.getCode(str);//方法调用

/**
 * 获取MD5加密后32位
 * @author lx
 *
 */
public class Md5EncordUtil {
   
	
	public static String getCode(String str){
   
		try {
   
			MessageDigest obj = MessageDigest.getInstance("MD5");
			obj.update(str.getBytes("UTF-8"));
			byte[] digest = obj.digest();

			final StringBuffer buffer = new StringBuffer();
			for (int i = 0; i < digest.length; ++i) {
   
				final byte b = digest[i];
				final int value = (b & 0x7F) + (b < 0 ? 128 : 0);
				buffer.append(value < 16 ? "0" : "");
				buffer.append(Integer.toHexString(value));
			}
			return buffer.toString();
		} catch (NoSuchAlgorithmException e) {
   
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
   
			e.printStackTrace();
		}
		return null;
	}
}

前端js原生代码实现:

var key =md5(str,32);//方法调用

//字符串md5加密
function md5(string,bit) {
   
    function md5_RotateLeft(lValue, iShiftBits) {
   
        return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
    }
    function md5_AddUnsigned(lX, lY) {
   
        var lX4, lY4, lX8, lY8, lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
        if (lX4 & lY4) {
   
            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        }
        if (lX4 | lY4) {
   
            if (lResult & 0x40000000) {
   
                return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
            } else {
   
                return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
            }
        } else {
   
            return (lResult ^ lX8 ^ lY8);
        }
    }
    function md5_F(x, y, z) {
   
        return (x & y) | ((~x) & z);
    }
    function md5_G(x, y, z) {
   
        return (x & z) | (y & (~z));
    }
    function md5_H(x, y, z) {
   
        return (x ^ y ^ z);
    }
    function md5_I(x, y, z) {
   
        return (y ^ (x | (~z)));
    }
    function md5_FF(a, b, c, d, x, s, ac) {
   
        a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_F(b, c, d), x), ac));
        return md5_AddUnsigned(md5_RotateLeft(a, s), b);
    };
    function md5_GG(a, b, c, d, x, s, ac) {
   
        a = md5_AddUnsigned(a,