Escrito antes:
AngularJS é uma estrutura JavaScript. Ele pode ser adicionado às páginas HTML através da tag <Script>.
AngularJS estende HTML através de diretrizes e vincula dados ao HTML por meio de expressões.
AngularJS é uma excelente estrutura de desenvolvimento JS promovida pelo Google ...
Exibição da página:
A criptografia é comum em aplicações. Pessoalmente, recomendo a implementação de assinaturas de criptografia no front -end (se a criptografia frontal é necessária de Zhihu: http://www.zhihu.com/question/25539382)
Uma breve explicação dos algoritmos de criptografia de Base64, MD5 e SHA1:
1. Base64 é um algoritmo de criptografia reversível e simétrico; Base64 possui um conjunto básico de caracteres composto por 64 caracteres básicos.
Princípio de criptografia base64:
um. Base64 é um grupo de 3 bytes, e um byte ocupa 8 bits (bit)
b. Divida 24 bits em quatro grupos, cada um com 6 bits.
c. Em seguida, adicione 00 em cada grupo de dois dígitos altos, expanda para 32 bits, formando quatro bytes
2. A assinatura do MD5 é um algoritmo irreversível de digestão de mensagens; isto é, não pode ser descriptografado (do texto cifrado ao texto simples) (consulte o Baidu: http://baike.baidu.com/view/7636.htm) MD5 gerará um resumo de 128 bits de mensagens
um. Preenchimento: Primeiro, as informações precisam ser preenchidas para que o resultado do saldo restante de seu par de comprimentos de bit 512 seja igual a 448;
b. Variável de inicialização: o valor inicial de 128 bits é a variável de link de teste inicial. Esses parâmetros são usados na primeira rodada de operações e são expressos em Endianness Endian Big-Endian. São eles: a = 0x01234567, b = 0x89abcdef, c = 0xfedcba98, d = 0x76543210
c. Processando dados agrupados
d. Saída: a saída é uma cascata de A, B, C e D
3. A assinatura SHA1 é um algoritmo de assinatura digital irreversível (consulte o Baidu: http://baike.baidu.com/view/1228622.htm) O sha1 gerará um resumo de mensagens de 160 bits.
um. Preenchimento: Primeiro, as informações precisam ser preenchidas para que o resultado do saldo restante de seu par de comprimentos de bit 512 seja igual a 448;
b. Comprimento do complemento: o chamado comprimento do complemento é preencher o comprimento dos dados originais por trás da mensagem de que a operação de preenchimento foi realizada.
c. Constantes usadas
d. Funções usadas: No SHA1, precisamos de uma série de funções. Cada função ft (0 <= t <= 79) opera palavras de 32 bits b, c, d e gera palavras de 32 bits como saída
e. Calcule resumo da mensagem: O resumo da mensagem deve ser calculado usando as mensagens após o preenchimento e a substituição do comprimento.
Módulo de controle de login:
Módulo de serviço:
var criptografia = angular.module ('criptografia', []); criptografia.service ('md5', function () {var hexcase = 0; /* Formato de saída hexadecipal. caractere. acrescentar o preenchimento */x [len >> 5] | = 0x80 << ((len) % 32); x [(((len + 64) >>> 9) << 4) + 14] = len; var a = 1732584193; var = -271733879; var c = -2584193; 0; 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, 7, 7. 7. 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, –457883); 8], 7. -1990404162); a = md5_ff (a, b, c, d, x [i+12], 7, 1804603682); d = md5_ff (d, a, b, c, x [i+13], 12, -41101); c = md5_ff (c, c, d, d, d, d, n, 41101); -1502002290); b = md5_ff (b, c, d, a, x [i+ 15], 22, 1236535329); a = md5_gg (a, b, c, d, x [i+ 1], 5, -165710); -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); -660478335); b = md5_gg (b, c, d, a, x [i+4], 20, -405537848); a = md5_gg (a, b, c, d, x [i+9], 5, 5684438); d = md5_ (dg. -1019803690); c = md5_gg (c, d, a, b, x [i+3], 14, -187363961); b = md5_gg (b, c, d, a, x [i+8], 20, 11651501); -1444681467); d = md5_gg (d, a, b, c, x [i+ 2], 9, -51403784); c = md5_gg (c, d, a, b, x [i+ 7], 14, 17328473); b = md5_ (b (i+ 7], 14, 17328473); -1926607734); a = md5_hh (a, b, c, d, x [i+ 5], 4, -378558); d = md5_gg (b, c, d, a, x [i+ 5], 4, -37858); d = md5_g (b, b, c, c, d, d, d, d, d, d = md5_, x [i+ 5], 4, -37858); d = md5_, b (b, c, c, d, d, d, d, d, d = md5_, x [i+ 5], 4, -37758); d = md5_, b, b, c, c, d, d, d, d, d = md5_, x [i+ 5], 4, -37758); d = md5_, b (b, c, c, d, d, d, d, d = md5_. 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 [i+ 8], 11; 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] 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]; 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, -7252197) 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_hhhhh (i+ 6], 23, 76029189); a = md5_hhh (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, 7029189); a = md5_hhh (i+ 6], 23, 7029189); a = md5_hhh (i+ 6], 23, 7029189); 76029189); a = md5_hh (a, b, c, d, x [i+ 6], 23, 76029189); a = md5_hh (a, b, c, d, x [i+ 9], 4, -64034487); d = md5_h (d, d, d, d, b, b, b, d = md5_hh (i+ 9], 4, -6403487); d = md5_h (d, d, d, d, b, b, b, d = md5_h (i+ 9], 4, -6403487); d = md5_h (d, d, d, a, a 64487); -421815835); c = md5_hh (c, d, a, b, x [i+ 15], 16, 530742520); b = md5_hh (b, c, d, a, x [i+ 2], 23, -999151); -198630844); d = md5_ii (d, a, b, c, x [i+ 7], 10, 1126891415); c = md5_ii (c, d, a, b, x [i+ 14], 15, -141354905); b = md5_ii (i+ 14], 15, -141354905); b = md5_i (i+ 14], 15, -141354905); b = md5_i. -57434055); a = md5_ii (a, b, c, d, x [i+12], 6, 1700485571); d = md5_ii (d, a, b, c, x [i+3], 10, -1866606); c = md5_iii (c, c, c, i+3], 10, c, i+3], 10, c, i+3], 10, c, i+3], 10, c, i+3], 10, c, b, c = c = md5_i. -1051523); b = md5_ii (b, c, d, a, x [i+ 1], 21, -2054922799); a = md5_ii (b, c, d, a, x [i+ 1], 21, -20552279); a = md5_ii (A 1], 21, -2052279); a = md5_ii (A 1], 21, -2052279); a = md5_i (A 1], 21, -205279); 1873313359); d = md5_ii (d, a, b, c, x [i+15], 10, -30611744); c = md5_ii (c, d, a, b, x [i+6], 15, -156680); 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 = sfera_add (c, c, a); a; d);}}). Serviço ('base64', function () {_ keystr = "abcdefghijklmnopqrststwxyzabcdefghijklmnopqrststwxyz0123456789+/=" // Método público para " CHR3, ENC1, ENC2, ENC3, ENC4; var i = 0; input = _Utf8_Encode (entrada); while (i <input.length) {Chr1 = input.Charcodeat (i ++); Chr2 = input.Charcodeat (i ++); Chr3 = input.Charcodeat (i ++); 4) | +_Keystr.Charat (ENC3) +_Keystr.Charat (ENC4);} Retornar saída;} // Método privado para UTF-8 coding_utf8_encode = function (string) {string = string.replace (// r/n/g, "/n"); var utftext = ""; string.charcodeat (n); if (c <128) {utftext += string.fromCharcode (c);} else if ((c> 127) && (c <2048)) {utftext += string.fromCharcode ((c >> 6 e 192); utftext += string.FromMom += String.FromCharCode ((c >> 12) | 224); utftext += string.fromCharcode ((c >> 6) e 63) | 128); utftext += string.fromcharcode (c & 63) | 128);}} utftext;}}). Formato 0 - minúsculo; binb2hex (core_sha1 (str2binb (s), s.length * Chrsz));}/ * * calcule o sha-1 de uma matriz de palavras grandes endianas e um bit de comprimento */function core_sha1 (x, len) {/ * apêndão */x [len >> 5] | >> 9) << 4) + 15] = len; var w = matriz (80); var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; a; var oldB = b; var antigo = c; var antigo = d; var antigo = e; para (var j = 0; j <80; j ++) {if (j <16) w [j] = x [i+j]; else w [j] = rol (w [j - 3] ^ ^ [j - 8] ^ w [j - 14] ^ w [j - 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; sAFE_ADD (D, antigo); e = sAFE_Add (e, antigo);} Retorno Array (A, B, C, D, E);}})Estrutura de arquivo:
O exposto acima é a assinatura e a criptografia de implementação do Serviço CustomJS Introduzido a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!