以前に書かれた:
AngularJSはJavaScriptフレームワークです。 <script>タグを介してHTMLページに追加できます。
AngularJSは、ディレクティブを介してHTMLを拡張し、表現を介してデータをHTMLにバインドします。
AngularJSは、Googleが推進する優れたJS開発フレームワークです...
ページディスプレイ:
暗号化はアプリケーションで一般的です。個人的には、フロントエンドに暗号化署名を実装することをお勧めします(Zhihuからフロントエンド暗号化が必要かどうか:http://www.zhihu.com/question/25539382)
Base64、MD5、およびSHA1の暗号化アルゴリズムの簡単な説明:
1。Base64は、可逆的で対称的な暗号化アルゴリズムです。 Base64には、64の基本文字で構成される基本文字セットがあります。
Base64暗号化の原則:
a。 Base64は3バイトのグループで、1つのバイトが8ビット(ビット)を占有します
b。 24ビットを4つのグループに分割し、それぞれ6ビットを使用します。
c。次に、高2桁の各グループに00を追加し、32ビットに拡張し、4バイトを形成します
2。MD5署名は、不可逆的なメッセージダイジェストアルゴリズムです。つまり、(ciphertextからplantextまで)復号化することはできません(baidu:http://baike.baidu.com/view/7636.htmを参照してください)
a。 Fill:最初に、ビット長ペア512の残りのバランスの結果が448に等しくなるように、情報を入力する必要があります。
b。初期化変数:初期128ビット値は、初期トライアルリンク変数です。これらのパラメーターは、運用の第1ラウンドで使用されており、エンディアンのエンディアンエンディアン性で表現されています。 A = 0x01234567、b = 0x89Abcdef、c = 0xfedcba98、d = 0x76543210
c。グループ化されたデータの処理
d。出力:出力はA、B、C、Dのカスケードです
3。SHA1署名は、不可逆的なデジタル署名アルゴリズムです(baidu:http://baike.baidu.com/view/1228622.htmを参照してください)SHA1は160ビットメッセージダイジェストを生成します。
a。 Fill:最初に、ビット長ペア512の残りのバランスの結果が448に等しくなるように、情報を入力する必要があります。
b。補数の長さ:いわゆる補数の長さは、充填操作が実行されたというメッセージの背後にある元のデータの長さを埋めることです。
c。使用される定数
d。使用される関数:SHA1では、一連の関数が必要です。各関数ft(0 <= t <= 79)は32ビットの単語b、c、dを操作し、出力として32ビット単語を生成します
e。メッセージの概要:メッセージの概要は、塗りつぶしと長さの交換後のメッセージを使用して計算する必要があります。
ログインコントロールモジュール:
サービスモジュール:
var encryption = angular.module( 'encryption'、[]); encryption.service( 'md5'、function(){var hexcase = 0; /* hex出力形式。キャラクター8 -ascii -unicode*// hex_md5 = function {return binl2hex(str2binl(s)、s.length*chrsz);}/**パディング */x [len >> 5] | = 0x80 <<((len)%32); x [(((len + 64)>>> 9)<< 4) + 14] = len; var a = 1732584193; i <x.length; i+ = 16){var old = a; var oldc = c; var oldd = d; a = md5_ff(a、c、d、x [i+ 0]、7、-680876936); md5_ff(c、d、a、b、x [i+ 2]、17、606105819); b = md5_ff(b、c、d、a、x [i+ 3]、22、-1044525330); 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); 8]、7、1770035416); d = md5_ff(d、a、b、c、x [i+9]、12、-1958414417) -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); a = md5_gg(a、b、c、d、x [i+ 1]、5、-165796510); d = md5_gg(d、b、c、x [i+ 6]、 -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); -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、56844638); d = md5_gg(d、b、c、c、x [i+14] -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 = md5gg(A b、c、d、x [i+13] -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); -1926607734); a = md5_hh(a、b、c、d、x [i+ 5]、4、-378558); d = md5_gg(b、c、d、a、x [I+ 5]、4、-378558); 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] MD5_HH(C、D、A、B、X [I+11]、16、16、1839030562); b = md5hh(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 = md5hh(c、d、a、b、x、x [i+ 7]、16、-155497632); x [i+ 13]、4、681279174); d = md5_hh(d、a、b、c、x [i+ 0]、11、-358537222); c = md5_h(c、d、b、x [i+ 3]、16、-722521979); b = md5_h( 6]、23、76029189); a = md5hh(a、b、c、d、x [i+ 6]、23、76029189); a = md5_hh(a、b、c、d、x [i+ 6]、23、76029189); -3585372222); c = md5hh(c、d、a、b、x [i+ 3]、16、-722521979); b = md5hh(b、c、d、a、x [i+ 6]、23、76029189); 76029189」 -421815835); c = md5hh(c、d、a、b、x [i+ 15]、16、530742520); b = md5hh(b、c、d、a、x [I+ 2]、23、-99538651); -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); -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); a = md5_ii(a、b、c、d、x [i+ 8] 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); 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); 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); d);}})。サービス( 'base64'、function(){_ keystr = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/="; 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 ++); enc1 = chr1 = chr1> (chr2 >> 4); enc3 =((chr2&15)<< 2)|(chr3 >> 6); enc4 = chr3&63; if(isnan(chr2)){enc3 = ems4 = 64;} +_keystr.charat(enc3) +_keystr.charat(enc4);} return output;} // utf-8 encoding_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)| 192); utftext += string.fromCharcode(c&63); String.FromCharcode((c >> 12)| 224); utftext += string.fromCharcode((c >> 6)&63)|小文字; binb2hex(core_sha1(str2binb(s)、s.length * chrsz));}/ * *ビットエンディアン語の配列のSha-1、およびビット長さ */function core_sha1(x、len){/ *パディング *を追加 */x [len >> 5] | = 0x80 <<(len> x; x; x; 9)<< 4) + 15] = len; var w = array(80); var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var e = -1009589776; var i = 0; var i = 0; i <x. oldb = 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); safe_add(d、old); e = safe_add(e、old);} return array(a、b、c、d、e);}})ファイル構造:
上記は、編集者が紹介したAngularJSカスタムサービスの実装署名と暗号化です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!