This article mainly introduces the md5 plug-in developed and implemented by jquery, and returns a string of decimal numbers. It is tested and passed in jquery1.9.2. If you need a friend, refer to the following method to return a string of decimal numbers, the test passed in jquery1.9.2.
The Code is as follows:
(Function ($ ){
$. Md5 = function (o ){
If (null = o ){
Return 'null ';
}
If (typeof o! = "String "){
Return 'null ';
}
// Calculate the filling Length
Var fill_data_len = 0;
Var data_len = o. length;
Var d_l_mod = data_len % MD5_BASE_LEN;
If (0! = D_l_mod)
Fill_data_len = MD5_BASE_LEN-d_l_mod;
If (fill_data_len <8)
Fill_data_len + = MD5_BASE_LEN;
Var buf = new Array (data_len + fill_data_len );
For (var I = 0; I <data_len; I ++)
Buf [I] = o. charCodeAt (I );
Var msg_bit_len = data_len * BYTE_BIT_LEN
Buf [data_len] = FIRST_FILL_BYTE;
For (var I = 0; I <4; I ++ ){
Buf [data_len + fill_data_len-8 + I] =
(Msg_bit_len & (0x000000ff <(I * 8 )))
> (I * 8 ));
}
Var md5_c = [MD5_A, MD5_ B, MD5_C, MD5_D];
Var md5_code = [MD5_A, MD5_ B, MD5_C, MD5_D];
For (var m = 0; m <data_len + fill_data_len; m + = 64 ){
Var buf_p = new Array (16 );
For (var I = 0; I <16; I ++ ){
Buf_p [I] = 0;
For (var j = 0; j <4; j ++ ){
Buf_p [I] <= 8;
Buf_p [I] | = buf [m + j + I * 4];
}
}
For (var k = 0; k <16; k + = 4 ){
Md5_c [0] = FF (md5_c [0], md5_c [1], md5_c [2],
Md5_c [3], buf_p [k], 7, md5_ti [k]);
Md5_c [3] = FF (md5_c [3], md5_c [0], md5_c [1],
Md5_c [2], buf_p [k + 1], 12,
Md5_ti [k + 1]);
Md5_c [2] = FF (md5_c [2], md5_c [3], md5_c [0],
Md5_c [1], buf_p [k + 2], 17,
Md5_ti [k + 2]);
Md5_c [1] = FF (md5_c [1], md5_c [2], md5_c [3],
Md5_c [0], buf_p [k + 3], 22,
Md5_ti [k + 3]);
}
Md5_c [0] = GG (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [1], 5, md5_ti [16]);
Md5_c [3] = GG (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [6], 9, md5_ti [17]);
Md5_c [2] = GG (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [11], 14, md5_ti [18]);
Md5_c [1] = GG (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [0], 20, md5_ti [19]);
Md5_c [0] = GG (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [5], 5, md5_ti [20]);
Md5_c [3] = GG (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [10], 9, md5_ti [21]);
Md5_c [2] = GG (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [15], 14, md5_ti [22]);
Md5_c [1] = GG (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [4], 20, md5_ti [23]);
Md5_c [0] = GG (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [9], 5, md5_ti [24]);
Md5_c [3] = GG (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [14], 9, md5_ti [25]);
Md5_c [2] = GG (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [3], 14, md5_ti [26]);
Md5_c [1] = GG (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [8], 20, md5_ti [27]);
Md5_c [0] = GG (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [13], 5, md5_ti [28]);
Md5_c [3] = GG (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [2], 9, md5_ti [29]);
Md5_c [2] = GG (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [7], 14, md5_ti [30]);
Md5_c [1] = GG (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [12], 20, md5_ti [31]);
Md5_c [0] = HH (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [5], 4, md5_ti [32]);
Md5_c [3] = HH (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [8], 11, md5_ti [33]);
Md5_c [2] = HH (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [11], 16, md5_ti [34]);
Md5_c [1] = HH (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [14], 23, md5_ti [35]);
Md5_c [0] = HH (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [1], 4, md5_ti [36]);
Md5_c [3] = HH (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [4], 11, md5_ti [37]);
Md5_c [2] = HH (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [7], 16, md5_ti [38]);
Md5_c [1] = HH (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [10], 23, md5_ti [39]);
Md5_c [0] = HH (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [13], 4, md5_ti [40]);
Md5_c [3] = HH (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [0], 11, md5_ti [41]);
Md5_c [2] = HH (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [3], 16, md5_ti [42]);
Md5_c [1] = HH (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [6], 23, md5_ti [43]);
Md5_c [0] = HH (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [9], 4, md5_ti [44]);
Md5_c [3] = HH (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [12], 11, md5_ti [45]);
Md5_c [2] = HH (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [15], 16, md5_ti [46]);
Md5_c [1] = HH (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [2], 23, md5_ti [47]);
Md5_c [0] = II (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [0], 6, md5_ti [48]);
Md5_c [3] = II (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [7], 10, md5_ti [49]);
Md5_c [2] = II (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [14], 15, md5_ti [50]);
Md5_c [1] = II (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [5], 21, md5_ti [51]);
Md5_c [0] = II (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [12], 6, md5_ti [52]);
Md5_c [3] = II (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [3], 10, md5_ti [53]);
Md5_c [2] = II (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [10], 15, md5_ti [54]);
Md5_c [1] = II (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [1], 21, md5_ti [55]);
Md5_c [0] = II (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [8], 6, md5_ti [56]);
Md5_c [3] = II (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [15], 10, md5_ti [57]);
Md5_c [2] = II (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [6], 15, md5_ti [58]);
Md5_c [1] = II (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [13], 21, md5_ti [59]);
Md5_c [0] = II (md5_c [0], md5_c [1], md5_c [2], md5_c [3],
Buf_p [4], 6, md5_ti [60]);
Md5_c [3] = II (md5_c [3], md5_c [0], md5_c [1], md5_c [2],
Buf_p [11], 10, md5_ti [61]);
Md5_c [2] = II (md5_c [2], md5_c [3], md5_c [0], md5_c [1],
Buf_p [2], 15, md5_ti [62]);
Md5_c [1] = II (md5_c [1], md5_c [2], md5_c [3], md5_c [0],
Buf_p [9], 21, md5_ti [63]);
For (var I = 0; I <4; I ++ ){
Md5_code [I] + = md5_c [I];
}
For (var I = 0; I <4; I ++ ){
Md5_c [I] = md5_code [I];
}
}
Var md5_code_str = "" + md5_code [0];
For (var I = 1; I <4; I ++)
Md5_code_str + = md5_code [I];
Return md5_code_str;
};
} (JQuery ));
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 bit_rol (d, n)
{
Return (d) <(n) | (d)> (32-(n ))));
}
Function FF (a, B, c, d, m, s, t)
{
Return B + bit_rol (a + F (B, c, d) + m + t), s );
}
Function GG (a, B, c, d, m, s, t)
{
Return B + bit_rol (a + G (B, c, d) + m + t), s );
}
Function HH (a, B, c, d, m, s, t)
{
Return B + bit_rol (a + H (B, c, d) + m + t), s );
}
Function II (a, B, c, d, m, s, t)
{
Return B + bit_rol (a + I (B, c, d) + m + t), s );
}
Var md5_ti = [
0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,
0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa,
0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed,
0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,
0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,
0x289b7ec6, 0xeaa0000fa, 0xd4ef3085, 0x04881d05,
0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039,
0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,
0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391
];
Var BYTE_BIT_LEN = 8;
Var MD5_BASE_LEN = 64;
Var MD5_A = 0x67452301;
Var MD5_ B = 0xefcdab89;
Var MD5_C = 0x98badcfe;
Var MD5_D = 0x10325476;
Var FIRST_FILL_BYTE = 0x80;