Dieser Artikel beschreibt die von JS implementierte Base64 -Verschlüsselung, MD5 -Verschlüsselung und SHA1 -Verschlüsselung. Teilen Sie es für Ihre Referenz wie folgt weiter:
1. Base64 Verschlüsselung
Führen Sie die Base64.js -Datei in die Seite ein, und die Anrufmethode lautet:
<! DocType html> <html> <kopf> <meta charset = "utf-8"> <title> Base64-Verschlüsselung </title> <script type = "text/javascript" src = "base64.js"> </script> <script type = "text/javascript"> var b = new base64 (); var str = b.code ("admin: admin"); alert ("Base64 codieren:" + str); // entschlüsseln Str = B.Decode (str); alert ("Base64 Decodo:" + str); </script> </head> <body> </body> </html>2. MD5 -Verschlüsselung
Weitere Informationen finden Sie in der MD5.JS -Datei auf der Seite, und die Anrufmethode ist
<! DocType html> <html> <kopf> <meta charset = "utf-8"> <title> md5-Verschlüsselung </title> <script type = "text/ecmascript" src = "md5.js"> </script> <script = "text/javascript"> var hash = erx_md5 ("123dafd"; alert (Hash) </script> </head> <body> </body> </html>3. SHA1 -Verschlüsselung
Es wird gesagt, dass dies die sicherste Verschlüsselung ist
Die Seite führt Sha1.js ein und die Anrufmethode ist
<! DocType html> <html> <head> <meta charset = "utf-8"> <title> sha1-Verschlüsselung </title> <script type = "tecmascript" src = "sha1.js"> </script> <script type = "text/javascript"> var sha = erx_sha1 ('mima13465'). Alert (SHA) </script> </head> <body> </body> </html>Hier ist der Quellcode für JS
Basis64.js:
/**** Base64 Encodes /Decodode ** @author haitao.tu*@date 2010-04-26*@email [email protected]**/function Base64 () {// private Eigenschaft _keyStr = "AbcdefghijklMnopqrstuvwxyzabcdefghijklMnopqrstuvwxyz0123456789+/="; // öffentliche Methode zur Codierung dieser.Codode = Funktion (input) {var output = ""; Var Chr1, CHR2, CHR3, ENC1, ENC2, ENC3, ENC4; var i = 0; input = _utf8_encode (Eingabe); while (i <input.length) {chr1 = input.charCodeat (i ++); chr2 = input.charCodeat (i ++); chr3 = input.charCodeat (i ++); ENC1 = CHR1 >> 2; ENC2 = ((Chr1 & 3) << 4) | (Chr2 >> 4); Enc3 = ((Chr2 & 15) << 2) | (Chr3 >> 6); ENC4 = CHR3 & 63; if (isnan (chr2)) {Enc3 = Enc4 = 64; } else if (isnan (chr3)) {Enc4 = 64; } output = output + _keystr.charat (Enc1) + _keystr.charat (Enc2) + _keystr.charat (Enc3) + _keystr.Charat (ENC4); } Rückgabeausgabe; } // öffentliche Methode zur Dekodierung this.decode = function (input) {var output = ""; var chr1, chr2, chr3; var ENC1, ENC2, ENC3, ENC4; var i = 0; input = input.replace (/[^a-za-z0-9/+/// =]/g, ""); while (i <input.length) {Enc1 = _keystr.indexof (input.charat (i ++)); Enc2 = _keystr.Indexof (input.charat (i ++)); Enc3 = _keystr.indexof (input.charat (i ++)); ENC4 = _KeyStr.Indexof (input.charat (i ++)); chr1 = (Enc1 << 2) | (ENC2 >> 4); chr2 = ((Enc2 & 15) << 4) | (ENC3 >> 2); chr3 = ((Enc3 & 3) << 6) | ENC4; output = output + string.fromcharcode (chr1); if (Enc3! = 64) {output = output + string.fromCharCode (chr2); } if (Enc4! = 64) {output = output + string.fromCharCode (chr3); }} output = _utf8_decode (output); Rückgabeausgabe; } // private Methode für UTF-8 codieren _utf8_encode = function (string) {string = string.replace (// r/n/g, "/n"); var utftext = ""; für (var n = 0; n <string.length; n ++) {var c = string.charCodeat (n); if (c <128) {utftext += string.fromCharCode (c); } else if ((c> 127) && (c <2048)) {utftext += string.fromCharCode ((c >> 6) | 192); UtfText += string.fromCharCode ((c & 63) | 128); } else {utftext += string.fromCharCode ((c >> 12) | 224); UtfText += string.fromCharCode ((c >> 6) & 63) | 128); UtfText += string.fromCharCode ((c & 63) | 128); }} return utftext; } // private Methode für UTF-8 decodieren _utf8_decode = function (utftext) {var string = ""; var i = 0; var c = c1 = c2 = 0; while (i <utftext.length) {c = utftext.charCodeat (i); if (c <128) {string += string.fromCharCode (c); i ++; } else if ((c> 191) && (c <224)) {c2 = utftext.charCodeat (i+1); String += string.fromCharCode (((c & 31) << 6) | (C2 & 63)); i += 2; } else {c2 = utftext.charCodeat (i+1); c3 = utftext.charCodeat (i+2); String += string.fromCharCode (((c & 15) << 12) | ((C2 & 63) << 6) | (C3 & 63)); i += 3; }} return String; }}
Md5.js:
/ * * Eine JavaScript -Implementierung der RSA Data Security, Inc. MD5 -Nachricht * Digest -Algorithmus, wie in RFC 1321 definiert. http://pajhome.org.uk/crypt/md5 für weitere Informationen. * // * * Konfigurierbare Variablen. Möglicherweise müssen Sie diese so optimieren, dass sie mit der Server-Seite kompatibel sind, aber die Standardeinstellungen funktionieren in den meisten Fällen. */var hexcase = 0; /* Hex -Ausgangsformat. 0 - Kleinbuchstaben; 1 - Großbuchstaben */var b64pad = ""; /* Basis-64-Pad-Zeichen. "=" für strenge RFC -Konformität */var Chrsz = 8; /* Bits pro Eingangszeichen. 8 - ASCII; 16 - Unicode * // * * Dies sind die Funktionen, die Sie normalerweise aufrufen möchten. Binl2B64 (core_md5 (str2binl (s), s.Length * chrsz)); Daten)); } Funktion B64_HMAC_MD5 (Schlüssel, Daten) {return Binl2b64 (core_hmac_md5 (Schlüssel, Daten)); } Funktion str_hmac_md5 (Schlüssel, Daten)); } function str_hmac_md5 (Schlüssel, Daten) {return binl2str (core_hmac_md5 (Schlüssel, Daten)); }/ * * Führen Sie einen einfachen Selbsttest durch, um festzustellen, ob die VM funktioniert core_md5 (x, len) { / * append padding * / x [len >> 5] | = 0x80 << ((len) % 32); x [(((len + 64) >>> 9) << 4) + 14] = len; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; für (var i = 0; i <x.Length; i += 16) {var old = a; var oldb = b; var oldc = c; var alt = d; a = Md5_ff (a, b, c, d, x [i+ 0], 7, -680876936); d = Md5_ff (d, a, b, c, x [i+ 1], 12, -389564586); C = Md5_ff (c, d, a, b, x [i+ 2], 17, 606105819); B = Md5_ff (b, c, d, a, x [i+ 3], 22, -1044525330); a = Md5_ff (a, b, c, d, x [i+ 4], 7, -176418897); d = Md5_ff (d, a, b, c, x [i+ 5], 12, 1200080426); C = Md5_ff (c, d, a, b, x [i+ 6], 17, -1473231341); B = Md5_ff (b, c, d, a, x [i+ 7], 22, -45705983); a = Md5_ff (a, b, c, d, x [i+ 8], 7, 1770035416); d = Md5_ff (d, a, b, c, x [i+ 9], 12, -1958414417); C = Md5_ff (c, d, a, b, x [i+10], 17, -42063); B = Md5_ff (B, C, D, A, X [I+11], 22, -1990404162); a = Md5_ff (a, b, c, d, x [i+12], 7, 1804603682); d = Md5_ff (d, a, b, c, x [i+13], 12, -40341101); C = Md5_ff (c, d, a, b, x [i+14], 17, -1502002290); B = Md5_ff (B, C, D, A, X [i+15], 22, 1236535329); a = Md5_gg (a, b, c, d, x [i+ 1], 5, -165796510); d = Md5_gg (d, a, b, c, x [i+ 6], 9, -1069501632); C = MD5_GG (C, D, A, B, X [i+ 1], 14, 643717713); B = MD5_GG (B, C, D, A, X [I+ 0], 20, -373897302); a = Md5_gg (a, b, c, d, x [i+ 5], 5, -701558691); d = Md5_gg (d, a, b, c, d, x [i+ 5], 5, -701558691); d = Md5_gg (d, a, b, c, c, x [i+10], 9, 38016083); C = MD5_GG (C, D, A, B, X [I+15], 14, -660478335); B = MD5_GG (B, C, D, A, X [I+ 4], 20, -405537848); a = Md5_gg (a, b, c, d, x [i+ 9], 5, 568446438); d = Md5_gg (d, a, b, c, x [i+14], 9, -1019803690); C = MD5_GG (C, D, A, B, X [I+ 3], 14, -187363961); B = MD5_GG (B, C, D, A, X [I+ 8], 20, 1163531501); a = Md5_gg (a, b, c, d, x [i+13], 5, -1444681467); d = Md5_gg (d, a, b, c, x [i+ 2], 9, -51403784); C = MD5_GG (C, D, A, B, X [I+ 7], 14, 1735328473); B = MD5_GG (B, C, D, A, X [I+12], 20, -1926607734); a = Md5_hh (a, b, c, d, x [i+ 5], 4, -378558); D = MD5_GG (B, C, D, A, X [I+ 5], 4, -378558); d = Md5_hh (d, a, b, c, x [i+ 8], 11, -2022574463); C = MD5_HH (C, D, A, B, X [I+11], 16, 1839030562); B = MD5_HH (B, C, D, A, X [I+14], 23, -35309556); a = Md5_hh (a, b, c, d, x [i+ 1], 4, -1530992060); d = Md5_hh (d, a, b, c, x [i+ 4], 11, 1272893353); C = Md5_HH (C, D, A, B, X [I+ 7], 16, -155497632); B = MD5_HH (B, C, D, A, X [I+10], 23, -1094730640); a = Md5_hh (a, b, c, d, x [i+13], 4, 681279174); d = Md5_hh (d, a, b, c, x [i+ 0], 11, -358537222); C = MD5_HH (C, D, A, B, X [I+ 3], 16, -722521979); B = MD5_HH (B, C, D, A, X [I+ 6], 23, 76029189); a = Md5_hh (a, b, c, d, x [i+ 6], 23, 76029189); a = Md5_hh (a, b, c, d, x [i+ 6], 23, 76029189); a = Md5_hh (a, b, c, d, x [i+ 0], 11, -358537222); C = MD5_HH (C, D, A, B, X [I+ 3], 16, -722521979); B = MD5_HH (B, C, D, A, X [I+ 6], 23, 76029189); a = Md5_hh (a, b, c, d, x [i+ 6], 23, 76029189); a = Md5_hh (a, b, c, d, x [i+ 6], 23, 76029189); a = Md5_hh (a, b, c, d, x [i+ 6], 9], 4, -640364487); d = Md5_hh (d, a, b, c, x [i+12], 11, -421815835); C = MD5_HH (C, D, A, B, X [I+15], 16, 530742520); B = MD5_HH (B, C, D, A, X [I+ 2], 23, -995338651); a = Md5_ii (a, b, c, d, x [i+ 0], 6, -198630844); d = Md5_ii (d, a, b, c, x [i+ 7], 10, 1126891415); C = Md5_ii (c, d, a, b, x [i+14], 15, -1416354905); B = Md5_ii (b, c, d, a, x [i+ 5], 21, -57434055); a = Md5_ii (a, b, c, d, x [i+12], 6, 1700485571); d = Md5_ii (d, a, b, c, x [i+ 3], 10, -1894986606); C = Md5_ii (c, d, a, b, x [i+10], 15, -1051523); B = Md5_ii (B, C, D, A, X [i+ 1], 21, -2054922799); a = Md5_ii (a, b, c, d, x [i+ 8], 6, 1873313359); d = Md5_ii (d, a, b, c, x [i+15], 10, -30611744); C = Md5_ii (c, d, a, b, x [i+ 6], 15, -1560198380); B = MD5_II (B, C, D, A, X [I+13], 21, 1309151649); a = Md5_ii (a, b, c, d, x [i+ 4], 6, -145523070); d = Md5_ii (d, a, b, c, x [i+11], 10, -1120210379); C = Md5_ii (c, d, a, b, x [i+ 2], 15, 718787259); B = Md5_ii (B, C, D, A, X [i+ 9], 21, -3434855551); a = safe_add (a, Olda); b = safe_add (b, Oldb); c = safe_add (c, oldc); d = safe_add (d, Oldd); } Rückgabearray (a, b, c, d);}/ * * Diese Funktionen implementieren die vier grundlegenden Operationen, die der Algorithmus verwendet. */Funktion md5_cmn (q, a, b, x, s, t) {return safe_add (bit_rol (safe_add (safe_add (safe_add (a, q), safe_add (x, t), s), b); & d), a, b, x, s, t); B, X, S, T); if (Bkey.Length> 16) BKEY = CORE_MD5 (Bkey, Key.Length * Chrsz); Hash = core_md5 (iPad.concat (str2binl (Daten)), 512 + Daten.Length * Chrsz); y) {var lsw = (x & 0xffff) + (y & 0xfff); >>> (32 - CNT)); bin [i >> 5] | String.FromChode (bin [i >> 5] >>> (i % 32) & Maske); = ""; Konvertieren Sie ein Array von Little-Endian-Wörtern in eine Basis-64-String */Funktion Binl2b64 (Binarray) {var tab = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz012356789+/"; += 3) {var triplet = ((binarray [i >> 2] >> 8 * (i%4)) & 0xff) << 16) | 0;Sha1.js:
/ * * Eine JavaScript-Implementierung des sicheren Hash-Algorithmus SHA-1, wie definiert * in FIPS PUB 180-1 * Version 2.1-Beta Copyright Paul Johnston 2000-2002. Details. * // * * Konfigurierbare Variablen. Möglicherweise müssen Sie diese so optimieren, dass sie mit der Server-Seite kompatibel sind, aber die Standardeinstellungen funktionieren in den meisten Fällen. */var hexcase = 0; /* Hex -Ausgangsformat. 0 - Kleinbuchstaben; 1 - Großbuchstaben */var b64pad = ""; /* Basis-64-Pad-Zeichen. "=" für strenge RFC -Konformität */var Chrsz = 8; /* Bits pro Eingangszeichen. 8 - ASCII; 16 - Unicode * // * * Dies sind die Funktionen, die Sie normalerweise aufrufen möchten. Binb2b64 (core_sha1 (str2binb (s), s.Length * chrsz)); Daten));} Funktion B64_HMAC_SHA1 (Schlüssel, Daten) {return Binb2b64 (core_hmac_sha1 (Schlüssel, Daten);} Funktion str_hmac_sha1 (Schlüssel, Daten)); Selbsttest, um zu sehen, ob die VM funktioniert */Funktion SHA1_VM_test () {return hex_sha1 ("ABC") == "A9993E364706816ABA3E25717850C26C9CD0D89D"; core_sha1 (x, len) { / * append padding * / x [len >> 5] | = 0x80 << (24 - Len % 32); x [((len + 64 >> 9) << 4) + 15] = len; var w = Array (80); var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var e = -1009589776; für (var i = 0; i <x.Length; i += 16) {var old = a; var oldb = b; var oldc = c; var alt = d; var alt = e; für (var j = 0; j <80; j ++) {if (j <16) w [j] = x [i+j]; sonst w [j] = rol (w [j - 3] ^ w [j - 8] ^ W [j - 14] ^ W [j - 16], 1); var t = safe_add (safe_add (rol (a, 5), sha1_ft (j, b, c, d)), safe_add (safe_add (e, w [j]), sha1_kt (j))); e = d; D = C; c = rol (b, 30); B = a; a = t; } a = safe_add (a, Olda); b = safe_add (b, Oldb); c = safe_add (c, oldc); d = safe_add (d, alt); e = safe_add (e, alt); } return Array (a, b, c, d, e);}/ * * Führen Sie die entsprechende Triplet -Kombinationsfunktion für die aktuelle * Iteration */Funktion SHA1_ft (t, b, c, d) {if (t <20) return (B & C) | ((~ b) & d); if (t <40) return b ^ c ^ d; if (t <60) return (b & c) | (B & D) | (CD); Rückgabe b ^ c ^ d;}/ * * Bestimmen Sie die entsprechende zusätzliche Konstante für die aktuelle Iteration */Funktion SHA1_KT (t) {return (t <20)? 1518500249: (t <40)? 1859775393: (t <60)? -1894007588: -899497514;}/ * * Berechnen Sie die HMAC -Sha1 eines Schlüssels und einige Daten */Funktion core_hmac_sha1 (Schlüssel, Daten) {var bkey = str2binb (Schlüssel); if (bkey.length> 16) bkey = core_sha1 (Bkey, Key.Length * chrsz); var iPad = Array (16), opad = array (16); für (var i = 0; i <16; i ++) {ipad [i] = bkey [i] ^ 0x36363636; opad [i] = bkey [i] ^ 0x5c5c5c5c; } var hash = core_sha1 (iPad.concat (str2binb (data)), 512 + data.length * chrsz); return core_sha1 (opad.concat (Hash), 512 + 160);}/ * * Ganzzahlen hinzufügen, wickeln Sie bei 2^32. Dies verwendet 16-Bit-Operationen intern *, um in einigen JS-Dolmetschern Fehler zu bearbeiten. */function safe_add (x, y) {var lsw = (x & 0xffff) + (y & 0xffff); var msw = (x >> 16) + (y >> 16) + (LSW >> 16); return (msw << 16) | (LSW & 0xffff);}/ * * bitweise eine 32-Bit-Nummer links drehen. */function rol (num, cnt) {return (num << cnt) | (Num >>> (32-CNT));}/ * * Konvertieren Sie eine 8-Bit- oder 16-Bit-Zeichenfolge in ein Array von Big-Endian-Wörtern * In 8-Bit-Funktion haben Zeichen> 255 ihre Hi-byte lautlos ignoriert. */function str2binb (str) {var bin = array (); var mask = (1 << chrsz) - 1; für (var i = 0; i <Str.Length * chrsz; i += chrsz) bin [i >> 5] | return bin;}/ * * Ein Array von Big-Endian-Wörtern in eine Zeichenfolge */Funktion binb2str (bin) {var str = ""; var mask = (1 << chrsz) - 1; für (var i = 0; i <bin.Length * 32; i += chrsz) str += string.fromCharCode ((bin [i >> 5] >>> (24 - i % 32)) & mask); return str;}/ * * konvertieren ein Array von Wörtern von Big-Endian in eine Hex-Zeichenfolge. */Funktion Binb2hex (binArray) {var hex_tab = hexcase? "0123456789abcdef": "0123456789abcdef"; var str = ""; für (var i = 0; i <binarray.length * 4; i ++) {str += hex_tab.charat ((binArray [i >> 2] >> ((3 - i % 4) * 8 +4)) & 0xf) +hex_tab.charat ((Binarray [i >> 2] >> (3 - i % 4) * 8) & 0xf); } return st;}/ * * Ein Array von Big-Endian-Wörtern in eine Basis-64-String umwandeln var str = ""; für (var i = 0; i <binary.length * 4; i += 3) {var triplet = (((binarray [i >> 2] >> 8 * (3 - i % 4)) & 0xff) << 16) | (((binarray [i + 1 >> 2] >> 8 * (3 - (i + 1) % 4)) & 0xff) << 8) | ((binarray [i + 2 >> 2] >> 8 * (3 - (i + 1) % 4)) & 0xff) << 8) | ((binarray [i + 2 >> 2] >> 8 * (3 - (i + 2) % 4)) & 0xff); für (var j = 0; j <4; j ++) {if (i * 8 +j * 6> binär.länge * 32) str += b64pad; else str += tab.charat ((Triplet >> 6 * (3 - j)) & 0x3f); }} return str;}Freunde, die an der JavaScript -Verschlüsselung interessiert sind, können sich auch auf die Online -Tools dieser Website beziehen :
MD5 Online -Verschlüsselungstool
Flucht -Verschlüsselung/Entschlüsselungsinstrument
Online -SHA1 -Verschlüsselungstool
Donner-, Express-, Tornado -URL -Verschlüsselungs-/Entschlüsselungswerkzeuge
Online -Erkennung von Passwortsicherheit
Hochfestes Passwortgenerator
For more information about JavaScript, please check out the topics of this site: "Summary of JavaScript Encryption and Decryption Skills", "Summary of JavaScript Switching Special Effects and Skills", "Summary of JavaScript Search Algorithm Skills", "Summary of JavaScript Animation Special Effects and Skills", "Summary of JavaScript Errors and Debugging Skills", "Summary of JavaScript Data Structures and Algorithmusfähigkeiten "," Zusammenfassung des JavaScript -Traversal -Algorithmus und der Fähigkeiten "und" Zusammenfassung der Verwendung von JavaScript Mathematical Operation Nutzung ""
Ich hoffe, dieser Artikel wird für JavaScript -Programme aller hilfreich sein.