ANGULARJS Custom Service implementation signature and encryption _angularjs

Source: Internet
Author: User
Tags base64 lowercase md5 rfc sha1 sha1 encryption

Written in front:

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 ...

Page Show:

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)

Simple explanation of Base64, MD5, SHA1 encryption algorithm:

1, base64 is a reversible, symmetric encryption algorithm, Base64 has 64 basic characters composed of basic character set

Base64 Encryption Principle:

A, Base64 is a group of 3 bytes, and one byte occupies 8 bits (bit)

b, and then the 24bit into four groups, each group of 6bit

C, again in each group of two-bit 00, expansion to 32bit, forming four bytes

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

C, processing grouped data

D, output: Output is a, B, C and D Cascade

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.

C, the constants used

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.

Login Control Module:

Service module:

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) &&amp ; (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);  } 
})

File structure:

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!

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.