ANGULARJS is a JavaScript framework. It can be added to the HTML page through the <script> tag.
ANGULARJS extends HTML through instructions and binds data to HTML through an expression.
ANGULARJS is Google's main push JS development of excellent framework ...
Encryption is common in applications, and personal advice is to implement cryptographic signatures on the front end (whether the front-end encryption is necessary from the knowledge: http://www.zhihu.com/question/25539382)
1, base64 is a reversible, symmetric encryption algorithm, Base64 has 64 basic characters composed of basic character set
2, MD5 signature is an irreversible message digest algorithm, that is, can not be decrypted (from ciphertext to plaintext) (please refer to Baidu: http://baike.baidu.com/view/7636.htm) MD5 will produce a 128-bit message digest
A, fill: first need to fill the information, so that its bit length of 512 of the result is equal to 448;
b, initialization variables: the initial 128-bit value of the first link variable, these parameters for the operation of the second round, in big-endian byte order, they are: a=0x01234567,b=0x89abcdef,c=0xfedcba98,d=0x76543210
3, SHA1 signature is an irreversible digital signature algorithm (please refer to Baidu: http://baike.baidu.com/view/1228622.htm) SHA1 will produce a 160-bit message digest
A, fill: first need to fill the information, so that its bit length of 512 of the result is equal to 448;
b, fill length: the so-called complement length is the original data to the length of the complement has been done after the message.
D, the function used: we need a series of functions in SHA1. Each function ft (0 <= T <= 79) operates 32-bit b,c,d and produces 32-bit words as output
E, computed message digest: A message digest must be computed using a message with a complement and a fill length.
var encryption = Angular.module (' encryption ', []); Encryption.service (' Md5 ', function () {var hexcase = 0;/* hex output format. 0-lowercase; 1-uppercase * * var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */var Chrsz = 8; /* bits per input character. 8-ascii;
16-unicode *//** * method for external call/THIS.HEX_MD5 = function (s) {return Binl2hex (CORE_MD5 (Str2binl (s), s.length * Chrsz)); } * * Calculate the MD5 of an array of Little-endian words, and a bit length/function core_md5 (x, len) {/* Append pad
Ding * * X[len >> 5] |= 0x80 << ((len)% 32);
X[((len +) >>> 9) << 4) + [] = Len;
var a = 1732584193;
var b =-271733879;
var c =-1732584194;
var d = 271733878; for (var i = 0; i < x.length i + =) {var Olda = A; var oldb = b; var oldc = c; var oldd = 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+11], 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, 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_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+ 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);
Return Array (A, B, C, D);
}
}). Service (' Base64 ', function () {_keystr = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/=";//
Public method for Encoding This.encode = function (input) {var output = "";
var chr1, CHR2, CHR3, Enc1, Enc2, enc3, Enc4;
var i = 0;
input = _utf8_encode (input); while (I < input.length) {chr1 = Input.charcodeat (i++); chr2 = Input.charcodeat (i++); chr3 = Input.charcodeat (i++); en
C1 = Chr1 >> 2; ENC2 = ((Chr1 & 3) << 4) |
(CHR2 >> 4); Enc3 = ((CHR2 &) << 2) |
(CHR3 >> 6);
Enc4 = CHR3 & 63; if (isNaN (CHR2)) {enc3 = Enc4 =;} else if (isNaN (CHR3)) {enc4 =;} output = output + _keystr.charat (ENC1) + _keys
Tr.charat (ENC2) + _keystr.charat (enc3) + _keystr.charat (ENC4);
return output; }//Private method for UTF-8 encoding _utf8_encode = function (string) {string = String.Replace (/\r\n/g, "\ n"); var utfte
XT = ""; for (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) |); Utftext + = String.fromCharCode ((C & 63) | 128);} else {Utftext + = String.fromCharCode ((c >>) | 224); Utftext + = String.fromCharCode (((c >> 6) & 63) | 1
28);
Utftext + + String.fromCharCode ((C & 63) | 128);
} return utftext;
}
}). Service (' Sha1 ', function () {var hexcase = 0;/* hex output format. 0-lowercase; 1-uppercase * * var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */var Chrsz = 8; /* bits per input character. 8-ascii; 16-unicode * * * * for external calls/* THIS.HEX_SHA1 = function (s) {return Binb2hex (CORE_SHA1 (STR2BINB (s), s.length * Chrsz)
); } * * Calculate the SHA-1 of an array of Big-endian words, and a bit length/function core_sha1 (x, len) {/* Append P
Adding * * X[len >> 5] |= 0x80 << (24-len% 32);x[(len + >> 9) << 4) = Len;
var w = Array (80);
var a = 1732584193;
var b =-271733879;
var c =-1732584194;
var d = 271733878;
var e =-1009589776; for (var i = 0; i < x.length i + +) {var olda = A; var oldb = b; var oldc = c; var oldd = d; var olde = e; for (var j = 0; J < 80; J + +) {if (J <) 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 (s
Afe_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, OLDD);
E = Safe_add (e, Olde);
Return Array (A, B, C, D, E); }
})
The above is a small set to introduce the ANGULARJS custom services to achieve the signature and encryption, I hope to help you, if you have any questions please give me a message, small series will promptly reply to everyone. Here also thank you very much for the cloud Habitat Community website support!