Escrito antes:
AngularJS es un marco JavaScript. Se puede agregar a las páginas HTML a través de la etiqueta <script>.
AngularJS extiende HTML a través de directivas y une datos a HTML a través de expresiones.
AngularJS es un excelente marco de desarrollo JS promovido por Google ...
Pantalla de la página:
El cifrado es común en las aplicaciones. Personalmente, recomiendo implementar firmas de cifrado en la parte delantera (si el cifrado del frente es necesario desde Zhihu: http://www.zhihu.com/question/25539382)
Una breve explicación de los algoritmos de cifrado de Base64, MD5 y SHA1:
1. Base64 es un algoritmo de cifrado reversible y simétrico; Base64 tiene un conjunto de caracteres básico compuesto por 64 caracteres básicos.
Base64 Principio de cifrado:
a. Base64 es un grupo de 3 bytes, y un byte ocupa 8 bits (bit)
b. Divida 24 bits en cuatro grupos, cada uno con 6 bits.
do. Luego agregue 00 en cada grupo de dos dígitos altos, se expanda a 32 bits, formando cuatro bytes
2. La firma MD5 es un algoritmo de resumen de mensajes irreversible; es decir, no se puede descifrarse (desde cifrado hasta texto sin formato) (consulte Baidu: http://baike.baidu.com/view/7636.htm) MD5 generará un digest de mensajes de 128 bits
a. Relleno: Primero, la información debe llenarse para que el resultado del saldo restante de su par de longitud de bits 512 sea igual a 448;
b. Variable de inicialización: el valor inicial de 128 bits es la variable de enlace de prueba inicial. Estos parámetros se utilizan en la primera ronda de operaciones y se expresan en endianness endian endian. Son: A = 0x01234567, b = 0x89abcdef, c = 0xfedcba98, d = 0x76543210
do. Procesamiento de datos agrupados
d. Salida: la salida es una cascada de A, B, C y D
3. SHA1 Signature es un algoritmo de firma digital irreversible (consulte Baidu: http://baike.baidu.com/view/1228622.htm) SHA1 generará un resumen de mensajes de 160 bits.
a. Relleno: Primero, la información debe llenarse para que el resultado del saldo restante de su par de longitud de bits 512 sea igual a 448;
b. Longitud del complemento: la llamada longitud del complemento es llenar la longitud de los datos originales detrás del mensaje de que se ha realizado la operación de relleno.
do. Constantes utilizadas
d. Funciones utilizadas: en SHA1 necesitamos una serie de funciones. Cada función ft (0 <= t <= 79) opera las palabras de 32 bits b, c, d y genera palabras de 32 bits como salida
mi. Calcule el resumen del mensaje: el resumen del mensaje debe calcularse utilizando mensajes después del llenado y el reemplazo de longitud.
Módulo de control de inicio de sesión:
Módulo de servicio:
var en cifrado = angular.module ('cifrado', []); cifrado.service ('md5', function () {var hexcase = 0; /* formato de salida hex. 0 - Lowercase; 1 - UpperCase* /Var B64pad = ""; /* base -64 Caracteres de entrada ". ASCII; */x [Len >> 5] | = 0x80 << ((Len) % 32); x [(((Len + 64) >>> 9) << 4) + 14] = Len; var a = 1732584193; var b = -2717333879; var c = -1732584194; var d = 27173388878; x.length; 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); b, c, x [i+ 5], 12, 1200080426); c = md5_ff (c, d, b, b, x [i+ 6], 17, -1473231341); b = md5_ff (b, c, d, a, x [i+ 7], 22, -45705983); a = md5_ff (a, b, c, x, x, x [i+ 7, x [i+ 7, x [i+ d, x [I+ d, d, d, d. 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, 22, 22, 22, -1990404162); a = md5_ff (a, b, d, 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, 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, 9, 9, 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, 5, 5, -701558691); d = md5_gg (d, a, b, c, d, x [i+5], 5, -7015558691); d = md5_gg (d, a, b, c, c, x [i+10], 9, 38016083); c = md5_gg (c, d, a, b,+15], 14, 14], 14], 14], 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, 5, 5, -14444681467); 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, 20, 20, 20, -1926607734); a = md5_hh (a, b, c, d, x [i+ 5], 4, -3785558); d = md5_gg (b, c, d, a, x [i+ 5], 4, -378558); d = md5_gg (b, c, d, a, x [i+ 5], 4, -358); d = md5_gg (b, c, d, a, x [i+ 5], 4, -358); d = md5_gg (b, c, d, a, x [i+ 5], 4, -358); d = md5_gg (b, c, d, a, x [i+ 5], 4, -358); d = md5_gg (b, c, d, a, x [i+ 5], 4, -328); md5_gg (b, c, d, a, x [i+ 12], 20, -1926607734); a = md5_hh (a, b, d, d, x [i+ 5], 4, -3785558); d = md5_hh (d, a, b, c, x [i+ 8], 11, -20225744463); 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_ 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, -35853722222); c = md5_hh (c, d, a, b, x [i+ 3], 16, -722521979); b = md5_hh (b, c, x [i+ a, d, d, d+ a, d+ a, a, a, a, a, a, a, a. 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+ 9], 4, -640364487); d = md5_hh (d, a, b, c, x [i+ 12], 11, 11, 11, 11, 11, 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, a, a,+ 5], 21, 21, 21, 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,+10], 15, 15, 15, -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); a = md5_ii (a, b, c, d, x [i+ 8], 6, 6, 6, 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, a, A,+13], 21, 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, 15, 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);} Return d);}}). Service ('base64', function () {_ keyStr = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/=";/método público para encoderarse. chr3, enc1, enc2, enc3, enc4; var i = 0; input = _utf8_encode (input); while (i <input.length) {chr1 = input.charcodeat (i ++); chr2 = input.charcodeat (i ++); chch3 = input.charCodeat (i ++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) (omin >> 4); enc3 = ((chr2 y 15) << 2) | +_Keystr.Charat (enc3) +_keystr.charat (enc4);} salida de retorno;} // Método privado para UTF-8 Encoding_utf8_encode = function (string) {String = String.Replace (// r/n/g, "/n"); var uttext = ""; String.CharCodeat (n); if (c <128) {utftext += stromChomCarCode (c);} else if ((c> 127) && (c <2048)) {utftext += string.fromCarCode ((c >> 6) | 192); utftext += striMarChomCode ((c & 63) | 128);}; String.FromCharCode ((c >> 12) | 224); utftext += stromChomCode ((c >> 6) & 63) | minúsculas; s.length * chrsz));}/ * * Calcule el SHA-1 de una matriz de palabras grandes endianas, y una longitud de bit */function core_sha1 (x, len) {/ * append Padding */x [Len >> 5] | = 0x80 << (24-Len % 32); X [(Len + 64 >> 9) << 4) + 15] = Len; Array (80); var a = 1732584193; var b = -2717333879; var c = -1732584194; var d = 2717333878; var e = -1009589776; para (var i = 0; i <x.length; i += 16) {var antiguo = a; a; d;var old = e;for (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))); 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, e = d, e = e = e = d, e = d. safe_add (e, antiguo);} return Array (a, b, c, d, e);}})Estructura del archivo:
Lo anterior es la firma de implementación y el cifrado del servicio personalizado AngularJS introducido por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!