تصف هذه المقالة تشفير BASE64 ، تشفير MD5 وتشفير SHA1 الذي تنفذه JS. شاركه للرجوع إليه ، على النحو التالي:
1. BASE64 تشفير
قدم ملف BASE64.JS في الصفحة ، وطريقة الاتصال هي:
<! doctype html> <html> <head> <meta charset = "utf-8"> <title> base64 تشفير </title> <script type = "text/javascript" src = "base64.js"> </script> <script type = "text/javascript"> var b = var str = b.encode ("admin: admin") ؛ التنبيه ("base64 encode:" + str) ؛ // decrypt str = b.decode (str) ؛ التنبيه ("decode base64:" + str) ؛ </script> </head> <body> </body> </html>2. تشفير MD5
ارجع إلى ملف md5.js في الصفحة ، وطريقة الاتصال هي
<! doctype html> <html> <head> <meta charset = "utf-8"> <title> md5 تشفير </title> <script type = "text/ecmascript" src = "md5 تنبيه (تجزئة) </script> </head> <body> </body> </html>
3. تشفير SHA1
يقال أن هذا هو التشفير الأكثر أمانًا
تقدم الصفحة sha1.js وطريقة الاتصال هي
<! doctype html> <html> <head> <meta charset = "utf-8"> <title> sha1 encryption </itlem> <script type = "text/ecmascript" src = "sha1.js"> </script> <script type = "text/javascript"> var sha = تنبيه (sha) </script> </head> <body> </body> </html>
هنا هو الرمز المصدري لـ JS
BASE64.JS:
/**** base64 encode /decode ** author haitao.tu*date 2010-04-26*eMail [email protected]* "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=" ؛ // الطريقة العامة لتشفير this.encode = function (input) {var output = "" ؛ var chr1 ، chr2 ، chr3 ، enc1 ، enc2 ، enc3 ، enc4 ؛ var i = 0 ؛ input = _utf8_encode (input) ؛ بينما (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 ؛ } آخر إذا (isnan (chr3)) {enc4 = 64 ؛ } الإخراج = الإخراج + _keystr.charat (enc1) + _keystr.charat (enc2) + _keystr.charat (enc3) + _keystr.charat (enc4) ؛ } إخراج الإرجاع ؛ } // الطريقة العامة لفك تشفير 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 ، "") ؛ بينما (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 ؛ الإخراج = الإخراج + string.fromcharcode (Chr1) ؛ if (enc3! = 64) {output = output + string.fromcharcode (chr2) ؛ } if (enc4! = 64) {output = output + string.fromcharcode (chr3) ؛ }} الإخراج = _utf8_decode (الإخراج) ؛ إرجاع الإرجاع ؛ }. var utftext = "" ؛ لـ (var n = 0 ؛ n <string.length ؛ n ++) {var c = string.charcodeat (n) ؛ if (c <128) {utftext += string.fromcharcode (c) ؛ } آخر إذا ((C> 127) && (c <2048)) {utftext += string.fromcharcode ((c >> 6) | 192) ؛ UtfText += string.fromcharcode ((C & 63) | 128) ؛ } آخر {utftext += string.fromcharcode ((C >> 12) | 224) ؛ UtfText += String.fromcharcode ((C >> 6) و 63) | 128) ؛ UtfText += string.fromcharcode ((C & 63) | 128) ؛ }} return utftext ؛ }. var i = 0 ؛ var c = c1 = c2 = 0 ؛ بينما (i <utftext.length) {c = utftext.charcodeat (i) ؛ if (c <128) {string += string.fromcharcode (c) ؛ i ++ ؛ } آخر إذا ((c> 191) && (c <224)) {c2 = utftext.charcodeat (i+1) ؛ string += string.fromcharcode ((C & 31) << 6) | (C2 & 63)) ؛ i += 2 ؛ } آخر {c2 = utftext.charcodeat (i+1) ؛ C3 = utftext.charcodeat (i+2) ؛ string += string.fromcharcode ((C & 15) << 12) | ((C2 & 63) << 6) | (C3 & 63)) ؛ i += 3 ؛ }} سلسلة الإرجاع ؛ }}
MD5.JS:
/ * * تطبيق JavaScript لـ RSA Data Security ، Inc. رسالة MD5 * خوارزمية Digest ، على النحو المحدد في RFC 1321. * الإصدار 2.1 حقوق الطبع والنشر (C) Paul Johnston 1999 - 2002. http://pajhome.org.uk/crypt/md5 لمزيد من المعلومات. * // * * المتغيرات القابلة للتكوين. قد تحتاج إلى تعديلها لتكون متوافقة مع * من جانب الخادم ، ولكن الإعدادات الافتراضية تعمل في معظم الحالات. */var hexcase = 0 ؛ /* تنسيق الإخراج HEX. 0 - أحرف صغيرة ؛ 1 - أقصى */var b64pad = "" ؛ /* BASE-64 PAD حرف. "=" للامتثال الصارم RFC */var chrsz = 8 ؛ /* بت لكل حرف إدخال. 8 - ASCII ؛ 16 - Unicode * // * * هذه هي الوظائف التي سترغب عادةً في الاتصال بها * إنها تأخذ وسيطات السلسلة وإرجاع إما hex أو base -64 سلاسل مشفرة */الوظيفة Hex_md5 (s) {return binl2Hex (core_md5 (str2binl (s) binl2b64 (core_md5 (str2binl (s) ، s.length * chrsz)) ؛} وظيفة str_md5 (s) {return binl2str (core_md5 (str2binl (s) ، s.length * chrsz) ؛ بيانات))؛ } الدالة B64_HMAC_MD5 (المفتاح ، البيانات) {return binl2b64 (core_hmac_md5 (مفتاح ، البيانات))) ؛ } وظيفة str_hmac_md5 (المفتاح ، البيانات)) ؛ } الدالة str_hmac_md5 (المفتاح ، البيانات) {return binl2str (core_hmac_md5 (المفتاح ، البيانات)) ؛ }/ * * قم بإجراء اختبار ذاتي بسيط لمعرفة ما إذا كان VM يعمل */الوظيفة md5_vm_test () {return hex_md5 ("ABC") == "900150983CD24FB0D6963F7D28E17F72" ؛ 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 ؛ لـ (var i = 0 ؛ i <x.length ؛ i += 16) {var old = a ؛ var oldb = b ؛ var oldc = c ؛ var old = 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 ، -195841417) ؛ 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 ، -144681467) ؛ 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 ، -343485551) ؛ a = safe_add (a ، olda) ؛ b = safe_add (b ، oldb) ؛ C = Safe_add (C ، Oldc) ؛ d = Safe_add (d ، oldd) ؛ } صفيف الإرجاع (A ، B ، C ، D) ؛}/ * * تنفذ هذه الوظائف العمليات الأساسية الأربع التي تستخدمها الخوارزمية. */function 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) ؛} وظيفة md5_gg (a ، b ، c ، d ، x ، s ، t) {return md5_cmn ((b & d) | (c & (~ d)) ، a ، b ، x ، s ، t) ؛ B ، X ، S ، T) ؛} الوظيفة md5_ii (a ، b ، c ، d ، x ، s ، t) {return md5_cmn (c ^ (b | (~ d)) ، a ، b ، x ، s ، t) ؛ str2binl (مفتاح) ؛ 0x5c5c5c ؛ المترجمين الفوريين. العودة (num << cnt) (num >> (32 - cnt) ؛ chrsz ؛ Bin.Length * 32 ؛ "0123456789abcdef": "0123456789ABCDEF" ؛ HEX_TAB.CHARAT ((binarray [i >> 2] >> (i ٪ 4) * 8)) & 0xf) ؛ "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 +/" ؛ << 16) | ((Binarray [i+1> 2] B64Pad ؛sha1.js:
/ * * تطبيق JavaScript لخوارزمية التجزئة الآمنة ، SHA-1 ، على النحو المحدد * في FIPS Pub 180-1 * الإصدار 2.1-Beta حقوق الطبع والنشر Paul Johnston 2000-2002. لمزيد من التفاصيل. * // * * المتغيرات القابلة للتكوين. قد تحتاج إلى تعديلها لتكون متوافقة مع * من جانب الخادم ، ولكن الإعدادات الافتراضية تعمل في معظم الحالات. */var hexcase = 0 ؛ /* تنسيق الإخراج HEX. 0 - أحرف صغيرة ؛ 1 - أقصى */var b64pad = "" ؛ /* BASE-64 PAD حرف. "=" للامتثال الصارم RFC */var chrsz = 8 ؛ /* بت لكل حرف إدخال. 8 - ASCII ؛ 16 - Unicode * // * * هذه هي الوظائف التي سترغب عادة في الاتصال بها * إنها تأخذ وسيطات السلسلة وإرجاع إما hex أو base -64 سلاسل مشفرة */وظيفة Hex_sha1 (s) BINB2B64 (core_sha1 (str2binb (s) ، s.length * chrsz)) ؛} وظيفة str_sha1 (s) {return binb2str (core_sha1 (str2binb (s) ، s.length * chrzz) ؛ البيانات)) ؛} الدالة B64_HMAC_SHA1 (المفتاح ، البيانات) {return binb2b64 (core_hmac_sha1 (مفتاح ، بيانات)) ؛} وظيفة str_hmac_sha1 (مفتاح ، بيانات)) اختبار ذاتي بسيط لمعرفة ما إذا كان VM يعمل */وظيفة sha1_vm_test () {return hex_sha1 ("ABC") == "A993E364706816ABA3E25717850C26C9C9CD0D89D" ؛ 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 ؛ لـ (var i = 0 ؛ i <x.length ؛ i += 16) {var old = a ؛ var oldb = b ؛ var oldc = c ؛ var old = d ؛ var old = e ؛ لـ (var j = 0 ؛ j <80 ؛ j ++) {if (j <16) w [j] = x [i+j] ؛ else 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))) ؛ ه = د ؛ د = ج ؛ ج = رول (ب ، 30) ؛ ب = أ ؛ أ = ر ؛ } a = safe_add (a ، olda) ؛ b = safe_add (b ، oldb) ؛ C = Safe_add (C ، Oldc) ؛ d = safe_add (d ، old) ؛ e = safe_add (e ، old) ؛ } صفيف الإرجاع (A ، B ، C ، D ، E) ؛}/ * * قم بإجراء وظيفة مجموعة التوائم الثلاثة المناسبة للتوتر */الوظيفة sha1_ft (t ، b ، c ، d) {if (t <20) return (b & c) | ((~ b) & d) ؛ if (t <40) return b ^ c ^ d ؛ إذا (t <60) العودة (b & c) | (B&D) | (C & D) ؛ return b ^ c ^ d ؛}/ * * حدد الثابت الإضافي المناسب للتكرار الحالي */function sha1_kt (t) {return (t <20)؟ 1518500249: (T <40)؟ 1859775393: (T <60)؟ -1894007588: -899497514 ؛}/ * * احسب HMAC -SHA1 للمفتاح وبعض البيانات */الوظيفة core_hmac_sha1 (المفتاح ، البيانات) {var bkey = str2binb (مفتاح) ؛ if (bkey.length> 16) bkey = core_sha1 (bkey ، key.length * chrsz) ؛ var ipad = Array (16) ، OPAD = Array (16) ؛ لـ (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) ؛}/ * * إضافة أعداد صحيحة ، لف في 2^32. يستخدم هذا عمليات 16 بت داخليًا * للعمل حول الأخطاء في بعض المترجمين الفوريين JS. */function safe_add (x ، y) {var lsw = (x & 0xffff) + (y & 0xffff) ؛ var msw = (x >> 16) + (y >> 16) + (lsw >> 16) ؛ العودة (MSW << 16) | (lsw & 0xffff) ؛}/ * * قم بتدوير رقم 32 بت إلى اليسار. */وظيفة rol (num ، cnt) {return (num << cnt) | (num >>> (32-CNT)) ؛}/ * * قم بتحويل سلسلة 8 بت أو 16 بت إلى مجموعة من الكلمات الكبيرة-في وظيفة 8 بت ، يتم تجاهل الشخصيات 255 الخاصة بهم بصمت. */وظيفة str2binb (str) {var bin = array () ؛ var mask = (1 << chrsz) - 1 ؛ لـ (var i = 0 ؛ i <str.length * chrsz ؛ i += chrsz) bin [i >> 5] | = (str.charcodeat (i / chrsz) & mask) << (24 - i ٪ 32) ؛ return bin ؛}/ * * تحويل مجموعة من الكلمات الكبيرة إلى سلسلة */وظيفة binb2str (bin) {var str = "" ؛ var mask = (1 << chrsz) - 1 ؛ لـ (var i = 0 ؛ i <bin.length * 32 ؛ i += chrsz) str += string.fromcharcode ((bin [i >> 5] >>> (24 - i ٪ 32)) & mask) ؛ إرجاع str ؛}/ * * تحويل مجموعة من الكلمات الكبيرة إلى سلسلة سداسية. */وظيفة binb2Hex (binarray) {var hex_tab = hexcase؟ "0123456789ABCDEF": "0123456789ABCDEF" ؛ var str = "" ؛ لـ (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] } return str ؛}/ * * تحويل مجموعة من الكلمات الكبيرة إلى سلسلة base-64 */وظيفة binb2b64 (binarray) {var tab = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzyz0123456789+/" ؛ var str = "" ؛ لـ (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) ؛ لـ (var j = 0 ؛ j <4 ؛ j ++) {if (i * 8 +j * 6> binary.length * 32) str += b64pad ؛ else str += tab.charat ((Triplet >> 6 * (3 - j)) & 0x3f) ؛ }} return str ؛}يمكن للأصدقاء المهتمين بتشفير JavaScript أيضًا أن يشير إلى الأدوات عبر الإنترنت لهذا الموقع :
أداة التشفير عبر الإنترنت MD5
الهروب من التشفير/أداة فك التشفير
أداة تشفير SHA1 عبر الإنترنت
أدوات تشفير URL الرعد ، Express ، تورنادو/فك التشفير
الكشف عن أمان كلمة المرور عبر الإنترنت
مولد كلمة مرور عالية القوة
لمزيد من المعلومات حول JavaScript ، يرجى مراجعة موضوعات هذا الموقع: "ملخص لمهارات تشفير JavaScript وفك التشفير" ، "ملخص لتبديل المؤثرات الخاصة والمهارات الخاصة بـ JavaScript" ، "ملخص خوارزف Javascript و Descript من المهارات" ملخصة ". مهارات الخوارزمية "،" ملخص خوارزمية JavaScript Traversal والمهارات "و" ملخص استخدام التشغيل الرياضي JavaScript "
آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.