Angular使用Crypto-JS進(jìn)行AES加密

<center>

使用Crypto-JS進(jìn)行AES加密

</center>

<P>在最近的項(xiàng)目中,調(diào)用登錄接口的猛,需要對(duì)賬號(hào)密碼數(shù)據(jù)進(jìn)行AES加密后再進(jìn)行傳輸,使用的是AES/ECB/PKCS5Padding,我前端部分使用選擇了CryptoJS,現(xiàn)在把使用的過(guò)程記錄如下。


需要注意的點(diǎn)

  • Crypto-JS的encrypt函數(shù)不會(huì)返回字符串徙垫,需要調(diào)用對(duì)象的toString方法饺汹,或者通過(guò)Crypto-js轉(zhuǎn)碼才能得到真實(shí)的結(jié)果蛔添。

使用步驟

  1. 引入Crypto-JS中的 aes.js及相關(guān)模塊
"bower_components/cryptojs/aes.js",
"bower_components/cryptojs/enc-utf8.js",
"bower_components/cryptojs/pad-pkcs7.js",
"bower_components/cryptojs/mode-ecb.js"
  1. 調(diào)用CryptoJS.AES
// 官方示例, 每次輸出的密文都不一樣,這樣使用的話是錯(cuò)誤的
CryptoJS.AES.encrypt("Message", "Secret Passphrase");

/* 正確的使用姿勢(shì)!兜辞! */
// 使用用戶名進(jìn)行MD5迎瞧,32位,作為key
var key_str = md5.createHash(username);
// 將key轉(zhuǎn)換成128 bit
var key = CryptoJS.enc.Utf8.parse(key_str);
// 對(duì)password進(jìn)行AES加密
var AESPass = CryptoJS.AES.encrypt(password, key, {
      mode: CryptoJS.mode.ECB,  //補(bǔ)齊方式 CBC,ECB,etc.
      padding: CryptoJS.pad.Pkcs7 // 偏移規(guī)則設(shè)定  pack5逸吵,pkcs7凶硅,nopadding,etc.
});
// CryptoJS 的 encrypt函數(shù)不會(huì)直接返回字符串,需要toString或者Crypto-JS進(jìn)行轉(zhuǎn)碼才能得到真實(shí)的結(jié)果扫皱。
var pass = AESPass.toString();
var authData = Base64.encode(username + ':' + pass).replace(/[\r\n]/g, ''); // 去除回車換行符

使用AngularJS的方式調(diào)用CryptoJS.AES

  1. 使用Angular將AES封裝成一個(gè)provider
  2. 提供兩種方式設(shè)置key
// 1. 一種為在angular.module('xxxx').config中進(jìn)行設(shè)置足绅,此種方式適用于key為一個(gè)固定值的情況
    CryptoKeyProvider.setCryptofraphyKey('key') // 在config中設(shè)置key
    $crypto.encrypto('plaintext') // 在業(yè)務(wù)邏輯處直接傳入需要加密的明文進(jìn)行調(diào)用
// 2. 第二種方式,每次都設(shè)置不同的key
    $crypto.encrypto('plaintext','key')
  1. 具體源碼如下:

注意:解密時(shí)捷绑,需要先將密文轉(zhuǎn)換成Base64的編碼的格式。

  1. 使用CryptoJS.enc.Hex.parse轉(zhuǎn)換成十六進(jìn)制
  2. 使用CryptoJS.enc.Base64.stringify將其變成Base64編碼的字符串
  3. 最后才能傳入CryptoJS.AES.decrypt方法對(duì)其解密
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氢妈,一起剝皮案震驚了整個(gè)濱河市粹污,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌首量,老刑警劉巖壮吩,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異加缘,居然都是意外死亡鸭叙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門生百,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)递雀,“玉大人,你說(shuō)我怎么就攤上這事蚀浆∽撼蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵市俊,是天一觀的道長(zhǎng)杨凑。 經(jīng)常有香客問(wèn)我,道長(zhǎng)摆昧,這世上最難降的妖魔是什么撩满? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮绅你,結(jié)果婚禮上伺帘,老公的妹妹穿的比我還像新娘。我一直安慰自己忌锯,他們只是感情好伪嫁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著偶垮,像睡著了一般张咳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上似舵,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天脚猾,我揣著相機(jī)與錄音,去河邊找鬼砚哗。 笑死龙助,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛛芥。 我是一名探鬼主播提鸟,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼脆淹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了沽一?” 一聲冷哼從身側(cè)響起盖溺,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铣缠,沒(méi)想到半個(gè)月后烘嘱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝗蛙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年蝇庭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捡硅。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哮内,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壮韭,到底是詐尸還是另有隱情北发,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布喷屋,位于F島的核電站琳拨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏屯曹。R本人自食惡果不足惜狱庇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恶耽。 院中可真熱鬧密任,春花似錦、人聲如沸偷俭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)社搅。三九已至驻债,卻和暖如春乳规,著一層夾襖步出監(jiān)牢的瞬間形葬,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工暮的, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留笙以,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓冻辩,卻偏偏與公主長(zhǎng)得像猖腕,于是被迫代替她去往敵國(guó)和親拆祈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容