• java和js实现MD5加密


    java

    import java.security.MessageDigest;
    
    public class Demo2 {
        public static void main(String[] args) {
            Demo2 demo2 = new Demo2();
            String encry = demo2.md5("admin");
            System.out.println("加密后:" + encry);
    
        }
    
        /**
         * md5加密
         */
        private static String md5(String input) {
            String encry = "";
            try {
                MessageDigest md5 = MessageDigest.getInstance("MD5");
                char[] charArray = input.toCharArray();
                byte[] byteArray = new byte[charArray.length];
    
                for (int i = 0; i < charArray.length; i++)
                    byteArray[i] = (byte) charArray[i];
                byte[] md5Bytes = md5.digest(byteArray);
                StringBuffer hexValue = new StringBuffer();
                for (int i = 0; i < md5Bytes.length; i++) {
                    int val = ((int) md5Bytes[i]) & 0xff;
                    if (val < 16)
                        hexValue.append("0");
                    hexValue.append(Integer.toHexString(val));
                }
                encry = hexValue.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return encry;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    js

    function MD5(sMessage) {
    	function RotateLeft(lValue, iShiftBits) {
    		return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
    	}
    	function 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 F(x, y, z) {
    		return (x & y) | ((~x) & z);
    	}
    	function G(x, y, z) {
    		return (x & z) | (y & (~z));
    	}
    	function H(x, y, z) {
    		return (x ^ y ^ z);
    	}
    	function I(x, y, z) {
    		return (y ^ (x | (~z)));
    	}
    	function FF(a, b, c, d, x, s, ac) {
    		a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
    		return AddUnsigned(RotateLeft(a, s), b);
    	}
    	function GG(a, b, c, d, x, s, ac) {
    		a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
    		return AddUnsigned(RotateLeft(a, s), b);
    	}
    	function HH(a, b, c, d, x, s, ac) {
    		a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
    		return AddUnsigned(RotateLeft(a, s), b);
    	}
    	function II(a, b, c, d, x, s, ac) {
    		a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
    		return AddUnsigned(RotateLeft(a, s), b);
    	}
    	function ConvertToWordArray(sMessage) {
    		var lWordCount;
    		var lMessageLength = sMessage.length;
    		var lNumberOfWords_temp1 = lMessageLength + 8;
    		var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
    		var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
    		var lWordArray = Array(lNumberOfWords - 1);
    		var lBytePosition = 0;
    		var lByteCount = 0;
    		while (lByteCount < lMessageLength) {
    			lWordCount = (lByteCount - (lByteCount % 4)) / 4;
    			lBytePosition = (lByteCount % 4) * 8;
    			lWordArray[lWordCount] = (lWordArray[lWordCount] | (sMessage.charCodeAt(lByteCount) << lBytePosition));
    			lByteCount++;
    		}
    		lWordCount = (lByteCount - (lByteCount % 4)) / 4;
    		lBytePosition = (lByteCount % 4) * 8;
    		lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
    		lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
    		lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
    		return lWordArray;
    	}
    	function WordToHex(lValue) {
    		var WordToHexValue = "",
    		WordToHexValue_temp = "",
    		lByte, lCount;
    		for (lCount = 0; lCount <= 3; lCount++) {
    			lByte = (lValue >>> (lCount * 8)) & 255;
    			WordToHexValue_temp = "0" + lByte.toString(16);
    			WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2)
    		}
    		return WordToHexValue;
    	}
    	var x = Array();
    	var k, AA, BB, CC, DD, a, b, c, d
    	var S11 = 7,
    	S12 = 12,
    	S13 = 17,
    	S14 = 22;
    	var S21 = 5,
    	S22 = 9,
    	S23 = 14,
    	S24 = 20;
    	var S31 = 4,
    	S32 = 11,
    	S33 = 16,
    	S34 = 23;
    	var S41 = 6,
    	S42 = 10,
    	S43 = 15,
    	S44 = 21;
    	x = ConvertToWordArray(sMessage);
    	a = 0x67452301;
    	b = 0xEFCDAB89;
    	c = 0x98BADCFE;
    	d = 0x10325476;
    	for (k = 0; k < x.length; k += 16) {
    		AA = a;
    		BB = b;
    		CC = c;
    		DD = d;
    		a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
    		d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
    		c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
    		b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
    		a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
    		d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
    		c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
    		b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
    		a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
    		d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
    		c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
    		b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
    		a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
    		d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
    		c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
    		b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
    		a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
    		d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
    		c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
    		b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
    		a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
    		d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
    		c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
    		b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
    		a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
    		d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
    		c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
    		b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
    		a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
    		d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
    		c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
    		b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
    		a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
    		d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
    		c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
    		b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
    		a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
    		d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
    		c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
    		b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
    		a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
    		d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
    		c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
    		b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
    		a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
    		d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
    		c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
    		b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
    		a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
    		d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
    		c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
    		b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
    		a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
    		d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
    		c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
    		b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
    		a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
    		d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
    		c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
    		b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
    		a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
    		d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
    		c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
    		b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
    		a = AddUnsigned(a, AA);
    		b = AddUnsigned(b, BB);
    		c = AddUnsigned(c, CC);
    		d = AddUnsigned(d, DD);
    	}
    	var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
    	return temp.toLowerCase();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178

    在这里插入图片描述

    完了。谢谢!

  • 相关阅读:
    设计模式简介
    函数的节流和防抖?节流和防抖的区别及实现
    【微机接口】第四章:宏指令程序设计
    华为交换机一端口3网段,跨网段通讯
    Geode滚动升级手册
    SpringMVC
    PMP每日一练 | 考试不迷路-11.22(包含敏捷+多选)
    R语言学习:modelStudio,模型解释性分析
    这一次,彻底梳理各种布局问题
    第四章. Pandas进阶—时间序列
  • 原文地址:https://blog.csdn.net/weixin_38351566/article/details/132686284