مكتوبة من قبل:
AngularJS هو إطار JavaScript. يمكن إضافته إلى صفحات HTML عبر علامة <script>.
AngularJS يمتد HTML من خلال التوجيهات وربط البيانات إلى HTML من خلال التعبيرات.
AngularJS هو إطار تطوير JS ممتاز تروج له Google ...
عرض الصفحة:
التشفير شائع في التطبيقات. أنا شخصياً أوصي بتنفيذ توقيعات التشفير على الواجهة الأمامية (سواء كان تشفير الواجهة الأمامية ضروريًا من Zhihu: http://www.zhihu.com/question/25539382)
شرح موجز لخوارزميات التشفير لـ BASE64 و MD5 و SHA1:
1. BASE64 هو خوارزمية تشفير عكسية ومتماثلة ؛ يحتوي BASE64 على مجموعة أحرف أساسية تتكون من 64 حرفًا أساسيًا.
مبدأ تشفير BASE64:
أ. BASE64 هي مجموعة من 3 بايت ، ويحتل بايت واحد 8 بت (بت)
ب. قسّم 24 بت إلى أربع مجموعات ، لكل منها 6 بت.
ج. ثم أضف 00 في كل مجموعة من الرقمين العاليين ، وتوسع إلى 32 بت ، وتشكيل أربعة بايت
2. توقيع MD5 هو خوارزمية هضم رسالة لا رجعة فيها ؛ وهذا هو ، لا يمكن فك تشفير (من ciphertext إلى plaintext) (يرجى الرجوع إلى baidu: http://baike.baidu.com/view/7636.htm) MD5 سوف ينشئ هضم رسالة 128-bit
أ. ملء: أولاً ، يجب ملء المعلومات بحيث تكون نتيجة التوازن المتبقي لزوجها الباقي 512 تساوي 448 ؛
ب. متغير التهيئة: القيمة الأولية 128 بت هي متغير ارتباط التجربة الأولي. يتم استخدام هذه المعلمات في الجولة الأولى من العمليات ويتم التعبير عنها في Endian Endian الكبير. هم: a = 0x01234567 ، b = 0x89abcdef ، c = 0xfedcba98 ، d = 0x76543210
ج. معالجة البيانات المجمعة
د. الإخراج: الإخراج عبارة عن سلسلة من A و B و C و D.
3. SHA1 توقيع هو خوارزمية توقيع رقمية لا رجعة فيها (يرجى الرجوع إلى Baidu: http://baike.baidu.com/view/1228622.htm) SHA1 ستقوم بإنشاء هضم رسالة 160-bit.
أ. ملء: أولاً ، يجب ملء المعلومات بحيث تكون نتيجة التوازن المتبقي لزوجها الباقي 512 تساوي 448 ؛
ب. الطول المكمل: ما يسمى الطول المكملة هو ملء طول البيانات الأصلية وراء الرسالة التي تم تنفيذ عملية التعبئة.
ج. الثوابت المستخدمة
د. الوظائف المستخدمة: في SHA1 نحتاج إلى سلسلة من الوظائف. كل وظيفة ft (0 <= t <= 79) تعمل على كلمات 32 بت ، C ، D ، وتوليد كلمات 32 بت كإخراج
ه. حساب ملخص الرسالة: يجب حساب ملخص الرسالة باستخدام الرسائل بعد ملء واستبدال الطول.
وحدة التحكم في تسجيل الدخول:
وحدة الخدمة:
var encryption = Angular.module ('التشفير' ، []) ؛ التشفير. ASCII ؛ */x [len >> 5] | = 0x80 << ((len) ٪ 32) ؛ x [(((len + 64) >>> 9) << 4) + 14] = len ؛ var a = 1732584193 ؛ var b = -27173879 ؛ var c = -1732584194 ؛ var d = 271738 ؛ for (for i = var i = var i = var i = var i = var i. X.Length ؛ md5_ff (c ، d ، a ، b ، x [i+ 2] ، 17 ، 606105819) ؛ b = md5_ff (b ، c ، d ، a ، x [i+ 3] ، 22 ، -104525330) ؛ 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 ، 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 ، d ، x ، -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) ؛ -1502002290) ؛ b = md5_ff (b ، c ، d ، a ، x [i+ 15] ، 22 ، 1236535329) ؛ -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) ؛ -7015558691) ؛ d = md5_gg (d ، a ، b ، c ، d ، x [i+5] ، 5 ، -701558691) ؛ d = md5_gg (d ، a ، b ، c ، c ، c [i+10] ، 9 ، 38016083) ؛ -660478335) ؛ b = md5_gg (b ، c ، d ، a ، x [i+4] ، 20 ، -405537848) ؛ -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) ؛ -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 ، x ، -19266607734) ؛ 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_gg (b ، d ، d ، a ، x ، 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_hh (d ، a ، b ، c ، x ، x ، md5_hh (c ، d ، a ، b ، x [i+11] ، 16 ، 1839030562) ؛ b = md5_hh (b ، c ، d ، a ، x [i+14] ، 23 ، -35309556) ؛ A ، B ، C ، X [I+ 4] ، 11 ، 1272893353) ؛ C = MD5_HH (C ، D ، A ، B ، X [I+ 7] ، 16 ، -155497632) ؛ x [i+ 13] ، 4 ، 681279174) ؛ d = md5_hh (d ، a ، b ، c ، x [i+ 0] ، 11 ، -358537222) ؛ c = md5_hh (c ، d ، b ، x [i+ 3] 6] ، 23 ، 76029189) ؛ a = md5_hh (a ، b ، c ، d ، x [i+ 6] ، 23 ، 76029189) ؛ -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) ؛ 76029189) ؛ a = md5_hh (a ، b ، c ، d ، x [i+ 6] ، 23 ، 76029189) ؛ -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) ؛ -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 ، x ، x ، x ، x ، -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) ؛ -1051523) ؛ b = md5_ii (b ، c ، d ، a ، x [i+ 1] ، 21 ، -2054922799) ؛ a = md5_ii (b ، c ، d ، a ، x [i+ 1] ، 21 ، -2054922799) ؛ 1873313359) ؛ d = md5_ii (d ، a ، b ، c ، x [i+15] ، 10 ، -30611744) ؛ c = md5_ii (c ، d ، a ، b ، x [i+6] ، 15 ، -156019830) ؛ b = md5_ii (B ، 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 ، b ، b ، 718787259) ؛ b = md5_ii (b ، c ، d ، a ، x [i+ 9] ، 21 ، -343485551) ؛ d) ؛}}). الخدمة ('base64' ، function () {_ keysttr = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/=" ؛ chr3 ، enc1 ، enc2 ، enc3 ، enc4 ؛ var i = 0 ؛ input = _utf8_encode (input) ؛ بينما >> 4) ؛ enc3 = ((chr2 & 15) << 2) | +_keystr.charat (enc3) +_keystr.charat (enc4) ؛} إخراج الإرجاع ؛} // طريقة خاصة لـ UTF-8 charoding_utf8_encode = function (string) {string = string.replace (// r/n/g ، "/n") ؛ var utftext = " string.charcodeat (n) ؛ if (c <128) {utftext += string.fromcharcode (c) ؛} آخر إذا ((c> 127) && (c <2048)) {utftext += string.fromcharcode ((c >> 6) ؛ utftext += += string.fromcharcode ((C >> 12) | 224) ؛ utftext += string.fromcharcode ((c >> 6) التنسيق 0 - Binb2Hex (core_sha1 (str2binb (s) ، s.length * chrsz)) ؛}/ * * احسب sha-1 لمجموعة من الكلمات الكبيرة ، وطول قليل */function core_sha1 (x ، len) {/ * append padding */x << 4) + 15] = len ؛ var w = array (80) ؛ var a = 1732584193 ؛ var b = -271733879 ؛ var c = -1732584194 ؛ var d = 271733878 ؛ var e = -100958976 ؛ for var i = 0 ؛ b ؛ var oldc = c ؛ var oldd = d ؛ var old = e ؛ for (var j = 0 ؛ j <80 ؛ j ++) {if (j <16) w [j] = x [i+j] ؛ 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) ؛ Safe_add (d ، old) ؛ e = safe_add (e ، old) ؛} صفيف الإرجاع (a ، b ، c ، d ، e) ؛}})بنية الملف:
ما سبق هو توقيع التنفيذ وتشفير خدمة AngularJS المخصصة التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!