Hướng dẫn import md5 javascript - nhập javascript md5

Nếu bạn không muốn sử dụng thư viện hoặc những thứ khác, bạn có thể sử dụng phương pháp JavaScript bản địa này:

var MD5 = function(d){var r = M(V(Y(X(d),8*d.length)));return r.toLowerCase()};function M(d){for(var _,m="0123456789ABCDEF",f="",r=0;r>>4&15)+m.charAt(15&_);return f}function X(d){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<>5]>>>m%32&255);return _}function Y(d,_){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n>16)+(_>>16)+(m>>16)<<16|65535&m}function bit_rol(d,_){return d<<_|d>>>32-_}

/** NORMAL words**/
var value = 'test';

var result = MD5(value);
 
document.body.innerHTML = 'hash -  normal words: ' + result;

/** NON ENGLISH words**/
value = 'מבחן'

//unescape() can be deprecated for the new browser versions
result = MD5(unescape(encodeURIComponent(value)));

document.body.innerHTML += '

hash - non english words: ' + result;

Đối với các từ không tiếng Anh, bạn có thể cần sử dụng các phương thức unescape () và encodeuricomponent ().

Hướng dẫn import md5 javascript - nhập javascript md5

Ông Míng

2.4265 huy hiệu vàng31 Huy hiệu bạc46 Huy hiệu đồng5 gold badges31 silver badges46 bronze badges

Đã trả lời ngày 2 tháng 11 năm 2015 lúc 20:15Nov 2, 2015 at 20:15

Hướng dẫn import md5 javascript - nhập javascript md5

4

Cryptojs là một thư viện tiền điện tử có thể tạo ra băm MD5 trong số những người khác: is a crypto library which can generate md5 hash among others:

Việc sử dụng với thẻ script:




Ngoài ra với ES6:

import MD5 from "crypto-js/md5";
console.log(MD5("Message").toString());
0

import MD5 from "crypto-js/md5";
console.log(MD5("Message").toString());

Bạn cũng có thể sử dụng nhập khẩu mô -đun:

var MD5 = require("crypto-js/md5");
console.log(MD5("Message").toString());

Đã trả lời ngày 18 tháng 12 năm 2013 lúc 7:26Dec 18, 2013 at 7:26

Amal Antonyamal AntonyAmal Antony

6.18713 Huy hiệu vàng51 Huy hiệu bạc76 Huy hiệu đồng13 gold badges51 silver badges76 bronze badges

5

Bạn có thể sử dụng Crypto-JS.

Tôi cũng sẽ khuyên bạn nên sử dụng SHA256, thay vì MD5.

Để cài đặt Crypto-JS qua NPM:

npm install crypto-js

Ngoài ra, bạn có thể sử dụng CDN và tham chiếu tệp JS.

Sau đó, để hiển thị băm MD5 và SHA256, bạn có thể thực hiện như sau:


Ví dụ làm việc ở đây, JSfiddle

Ngoài ra còn có các hàm JS khác sẽ tạo ra một hàm băm

import MD5 from "crypto-js/md5";
console.log(MD5("Message").toString());
1, được nêu dưới đây.

http://www.myersdaily.org/joseph/javascript/md5-text.html

http://pajhome.org.uk/crypt/md5/md5.html

function md5cycle(x, k) {
var a = x[0], b = x[1], c = x[2], d = x[3];

a = ff(a, b, c, d, k[0], 7, -680876936);
d = ff(d, a, b, c, k[1], 12, -389564586);
c = ff(c, d, a, b, k[2], 17,  606105819);
b = ff(b, c, d, a, k[3], 22, -1044525330);
a = ff(a, b, c, d, k[4], 7, -176418897);
d = ff(d, a, b, c, k[5], 12,  1200080426);
c = ff(c, d, a, b, k[6], 17, -1473231341);
b = ff(b, c, d, a, k[7], 22, -45705983);
a = ff(a, b, c, d, k[8], 7,  1770035416);
d = ff(d, a, b, c, k[9], 12, -1958414417);
c = ff(c, d, a, b, k[10], 17, -42063);
b = ff(b, c, d, a, k[11], 22, -1990404162);
a = ff(a, b, c, d, k[12], 7,  1804603682);
d = ff(d, a, b, c, k[13], 12, -40341101);
c = ff(c, d, a, b, k[14], 17, -1502002290);
b = ff(b, c, d, a, k[15], 22,  1236535329);

a = gg(a, b, c, d, k[1], 5, -165796510);
d = gg(d, a, b, c, k[6], 9, -1069501632);
c = gg(c, d, a, b, k[11], 14,  643717713);
b = gg(b, c, d, a, k[0], 20, -373897302);
a = gg(a, b, c, d, k[5], 5, -701558691);
d = gg(d, a, b, c, k[10], 9,  38016083);
c = gg(c, d, a, b, k[15], 14, -660478335);
b = gg(b, c, d, a, k[4], 20, -405537848);
a = gg(a, b, c, d, k[9], 5,  568446438);
d = gg(d, a, b, c, k[14], 9, -1019803690);
c = gg(c, d, a, b, k[3], 14, -187363961);
b = gg(b, c, d, a, k[8], 20,  1163531501);
a = gg(a, b, c, d, k[13], 5, -1444681467);
d = gg(d, a, b, c, k[2], 9, -51403784);
c = gg(c, d, a, b, k[7], 14,  1735328473);
b = gg(b, c, d, a, k[12], 20, -1926607734);

a = hh(a, b, c, d, k[5], 4, -378558);
d = hh(d, a, b, c, k[8], 11, -2022574463);
c = hh(c, d, a, b, k[11], 16,  1839030562);
b = hh(b, c, d, a, k[14], 23, -35309556);
a = hh(a, b, c, d, k[1], 4, -1530992060);
d = hh(d, a, b, c, k[4], 11,  1272893353);
c = hh(c, d, a, b, k[7], 16, -155497632);
b = hh(b, c, d, a, k[10], 23, -1094730640);
a = hh(a, b, c, d, k[13], 4,  681279174);
d = hh(d, a, b, c, k[0], 11, -358537222);
c = hh(c, d, a, b, k[3], 16, -722521979);
b = hh(b, c, d, a, k[6], 23,  76029189);
a = hh(a, b, c, d, k[9], 4, -640364487);
d = hh(d, a, b, c, k[12], 11, -421815835);
c = hh(c, d, a, b, k[15], 16,  530742520);
b = hh(b, c, d, a, k[2], 23, -995338651);

a = ii(a, b, c, d, k[0], 6, -198630844);
d = ii(d, a, b, c, k[7], 10,  1126891415);
c = ii(c, d, a, b, k[14], 15, -1416354905);
b = ii(b, c, d, a, k[5], 21, -57434055);
a = ii(a, b, c, d, k[12], 6,  1700485571);
d = ii(d, a, b, c, k[3], 10, -1894986606);
c = ii(c, d, a, b, k[10], 15, -1051523);
b = ii(b, c, d, a, k[1], 21, -2054922799);
a = ii(a, b, c, d, k[8], 6,  1873313359);
d = ii(d, a, b, c, k[15], 10, -30611744);
c = ii(c, d, a, b, k[6], 15, -1560198380);
b = ii(b, c, d, a, k[13], 21,  1309151649);
a = ii(a, b, c, d, k[4], 6, -145523070);
d = ii(d, a, b, c, k[11], 10, -1120210379);
c = ii(c, d, a, b, k[2], 15,  718787259);
b = ii(b, c, d, a, k[9], 21, -343485551);

x[0] = add32(a, x[0]);
x[1] = add32(b, x[1]);
x[2] = add32(c, x[2]);
x[3] = add32(d, x[3]);

}

function cmn(q, a, b, x, s, t) {
a = add32(add32(a, q), add32(x, t));
return add32((a << s) | (a >>> (32 - s)), b);
}

function ff(a, b, c, d, x, s, t) {
return cmn((b & c) | ((~b) & d), a, b, x, s, t);
}

function gg(a, b, c, d, x, s, t) {
return cmn((b & d) | (c & (~d)), a, b, x, s, t);
}

function hh(a, b, c, d, x, s, t) {
return cmn(b ^ c ^ d, a, b, x, s, t);
}

function ii(a, b, c, d, x, s, t) {
return cmn(c ^ (b | (~d)), a, b, x, s, t);
}

function md51(s) {
txt = '';
var n = s.length,
state = [1732584193, -271733879, -1732584194, 271733878], i;
for (i=64; i<=s.length; i+=64) {
md5cycle(state, md5blk(s.substring(i-64, i)));
}
s = s.substring(i-64);
var tail = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0];
for (i=0; i>2] |= s.charCodeAt(i) << ((i%4) << 3);
tail[i>>2] |= 0x80 << ((i%4) << 3);
if (i > 55) {
md5cycle(state, tail);
for (i=0; i<16; i++) tail[i] = 0;
}
tail[14] = n*8;
md5cycle(state, tail);
return state;
}

/* there needs to be support for Unicode here,
 * unless we pretend that we can redefine the MD-5
 * algorithm for multi-byte characters (perhaps
 * by adding every four 16-bit characters and
 * shortening the sum to 32 bits). Otherwise
 * I suggest performing MD-5 as if every character
 * was two bytes--e.g., 0040 0025 = @%--but then
 * how will an ordinary MD-5 sum be matched?
 * There is no way to standardize text to something
 * like UTF-8 before transformation; speed cost is
 * utterly prohibitive. The JavaScript standard
 * itself needs to look at this: it should start
 * providing access to strings as preformed UTF-8
 * 8-bit unsigned value arrays.
 */
function md5blk(s) { /* I figured global was faster.   */
var md5blks = [], i; /* Andy King said do it this way. */
for (i=0; i<64; i+=4) {
md5blks[i>>2] = s.charCodeAt(i)
+ (s.charCodeAt(i+1) << 8)
+ (s.charCodeAt(i+2) << 16)
+ (s.charCodeAt(i+3) << 24);
}
return md5blks;
}

var hex_chr = '0123456789abcdef'.split('');

function rhex(n)
{
var s='', j=0;
for(; j<4; j++)
s += hex_chr[(n >> (j * 8 + 4)) & 0x0F]
+ hex_chr[(n >> (j * 8)) & 0x0F];
return s;
}

function hex(x) {
for (var i=0; i> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
}

Sau đó, chỉ cần sử dụng chức năng MD5, như được hiển thị bên dưới:

alert(md5("Test string"));

Một công việc khác JS Fiddle ở đây

Đã trả lời ngày 6 tháng 2 năm 2013 lúc 16:04Feb 6, 2013 at 16:04

Hướng dẫn import md5 javascript - nhập javascript md5

DarrendarrenDarren

67.4K24 Huy hiệu vàng134 Huy hiệu bạc144 Huy hiệu đồng24 gold badges134 silver badges144 bronze badges

7

Là một sự thay thế đương đại, bây giờ có một tiêu chuẩn cho mật mã phía khách hàng. Điều này có lợi thế là được tối ưu hóa bởi chính trình duyệt.

Lấy từ ví dụ trong tài liệu:

async function sha256(message) {
    // encode as UTF-8
    const msgBuffer = new TextEncoder().encode(message);

    // hash the message
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    
    // convert ArrayBuffer to Array
    const hashArray = Array.from(new Uint8Array(hashBuffer));

    // convert bytes to hex string
    const hashHex = hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');
    return hashHex;
}

sha256('abc').then(hash => console.log(hash));

(async function() {
    const hash = await sha256('abc');
}());

MD5 có khả năng không được hỗ trợ, tuy nhiên những người như SHA-256, SHA-384 và SHA-512 là.

Và những người đó có thể cũng có thể được tính toán phía máy chủ.

Đây là một số tài liệu về việc sử dụng: https://developer.mozilla.org/en-us/docs/web/api/subtlecrypto/digest

Và khả năng tương thích của trình duyệt chéo: https://caniuse.com/#feat=cryptography

Hướng dẫn import md5 javascript - nhập javascript md5

maxime1992

21.4K10 Huy hiệu vàng75 Huy hiệu bạc119 Huy hiệu đồng10 gold badges75 silver badges119 bronze badges

Đã trả lời ngày 27 tháng 11 năm 2018 lúc 0:11Nov 27, 2018 at 0:11

Alex Keysmithalex KeysmithAlex KeySmith

16.3k8 Huy hiệu vàng71 Huy hiệu bạc150 Huy hiệu Đồng8 gold badges71 silver badges150 bronze badges

4

Dưới đây là phiên bản đơn giản và được thu nhỏ (khoảng 3,5k) của triển khai tốt đẹp này:

function md5(d){return rstr2hex(binl2rstr(binl_md5(rstr2binl(d),8*d.length)))}function rstr2hex(d){for(var _,m="0123456789ABCDEF",f="",r=0;r>>4&15)+m.charAt(15&_);return f}function rstr2binl(d){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<>5]>>>m%32&255);return _}function binl_md5(d,_){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n>16)+(_>>16)+(m>>16)<<16|65535&m}function bit_rol(d,_){return d<<_|d>>>32-_}

Hàm sẽ trả về chuỗi ký tự 32 chữ hoa như

import MD5 from "crypto-js/md5";
console.log(MD5("Message").toString());
2.

Đối với các chuỗi chữ và số đơn giản, bạn có thể chạy nó như thế này:




0

Nếu bạn cần hỗ trợ unicode đầy đủ, bạn có thể gọi cho unescape và mã hóa trên chuỗi trước khi chuyển nó:




1

Hướng dẫn import md5 javascript - nhập javascript md5

Pikamander2

6.5113 Huy hiệu vàng43 Huy hiệu bạc65 Huy hiệu Đồng3 gold badges43 silver badges65 bronze badges

Đã trả lời ngày 1 tháng 3 năm 2018 lúc 12:54Mar 1, 2018 at 12:54

Orfruitfruitorfruit

1.3321 Huy hiệu vàng16 Huy hiệu bạc25 Huy hiệu đồng1 gold badge16 silver badges25 bronze badges

2




2

Đã trả lời ngày 27 tháng 1 lúc 1:23Jan 27 at 1:23

U53rU53rU53r

1361 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

1

Đã thêm hỗ trợ Unicode vào các phiên bản @valdeci và @derzu. Nó cũng có thể được sử dụng để các đối tượng JSON MD5-ize. Đã thêm sự không tương thích với IE11 trở xuống :)
It can be used to md5-ize JSON objects too.
Added incompatibility with IE11 and below :)




3

Hướng dẫn import md5 javascript - nhập javascript md5

Valdeci

12.8k6 Huy hiệu vàng54 Huy hiệu bạc78 Huy hiệu Đồng6 gold badges54 silver badges78 bronze badges

Đã trả lời ngày 9 tháng 9 năm 2021 lúc 16:58Sep 9, 2021 at 16:58

FasoeufasoeuFasoeu

1.1327 huy hiệu bạc8 Huy hiệu đồng7 silver badges8 bronze badges

1

Đây là phiên bản tương thích của JSLINT của câu trả lời của @valdeci.




4

Đã trả lời ngày 27 tháng 7 năm 2021 lúc 14:30Jul 27, 2021 at 14:30

DerzuderzuDerzu

6.7353 huy hiệu vàng54 Huy hiệu bạc59 Huy hiệu đồng3 gold badges54 silver badges59 bronze badges

Nó có thể được tìm thấy như là chức năng trên ý chính này https://github.com/blueimp/javascript-md5/blob/master/js/md5.js




5

Đã trả lời ngày 27 tháng 1 lúc 1:32Jan 27 at 1:32

Hướng dẫn import md5 javascript - nhập javascript md5

Bạn có thể sử dụng thư viện nhẹ Pure-MD5. Chỉ cần 4,7kb.




6



7



8

Đã trả lời ngày 20 tháng 6 năm 2019 lúc 5:45Jun 20, 2019 at 5:45

Eustatoseustatoseustatos

6701 Huy hiệu vàng9 Huy hiệu bạc 20 Huy hiệu đồng1 gold badge9 silver badges20 bronze badges

Bạn có thể sử dụng Crypto-JS.

Để sử dụng Crypto-JS, bạn cần tải Core.js sau đó MD5.js.

Một danh sách các URL ở đây https://cdnjs.com/libries/crypto-js

Cryptojs cũng có sẵn ở dạng zip tại đây https://code.google.com/archive/p/crypto-js/doads

Có một câu trả lời từ người trả lời 'Amal' vào năm 2013, tương tự như thế này nhưng a) liên kết của anh ta với MD5.js không còn hoạt động b) Anh ta đã không tải Core.js trước đó, điều này là cần thiết.




9

Đã trả lời ngày 26 tháng 7 năm 2019 lúc 12:28Jul 26, 2019 at 12:28

Barlopbarlopbarlop

12.2k7 Huy hiệu vàng77 Huy hiệu bạc105 Huy hiệu Đồng7 gold badges77 silver badges105 bronze badges

1