常用的加密算法

常見(jiàn)的七種加密算法 以及實(shí)現(xiàn)

數(shù)字簽名禽炬、信息加密是前后端開(kāi)發(fā)經(jīng)常使用到的技術(shù)植阴,應(yīng)用場(chǎng)景包括了用戶登入蟹瘾、交易、信息通訊掠手、oauth等等憾朴。不同應(yīng)用場(chǎng)景可能需要搭配不同的應(yīng)用算法來(lái)實(shí)現(xiàn)。

數(shù)字簽名

數(shù)字簽名喷鸽,通過(guò)可鑒別的數(shù)字信息驗(yàn)證 自身身份的一種方式,可以理解為現(xiàn)實(shí)生活當(dāng)中身份證的身份證號(hào)碼众雷。

一套數(shù)字簽名通常定義兩種互補(bǔ)的運(yùn)算,一個(gè)用于簽名做祝,另一個(gè)用于驗(yàn)證砾省。發(fā)送者持有私鑰,接收者持有私鑰對(duì)應(yīng)的公鑰混槐。能夠在接受到來(lái)自發(fā)送者信息時(shí)用于驗(yàn)證其身份纯蛾。

加密和解密

  • 加密
    • 數(shù)據(jù)加密的基本過(guò)程,就是對(duì)原來(lái)為明文的文件或按照某種算法進(jìn)行處理纵隔,讓其成為不可讀的一段代碼,通常稱為密文。用于保護(hù)數(shù)據(jù)不被人獲取捌刮,竊取碰煌。
  • 解密
    • 加密的逆過(guò)程為解密,即將該編碼信息轉(zhuǎn)化為其原來(lái)數(shù)據(jù)的過(guò)程

對(duì)稱加密和非對(duì)稱加密

加密算法份對(duì)稱加密和非對(duì)稱加密绅作,其中對(duì)稱加密的算法與解密密鑰相同芦圾,非對(duì)稱加密算法的加密密鑰與解密密鑰不同,此外還有一類不需要密鑰的散列算法俄认。

常見(jiàn)的對(duì)稱加密算法主要有DES 3DES AES等个少,常見(jiàn)的非堆成算法主要有RSA DSA 等,散列算法主要有SHA-1 MD5

對(duì)稱加密

對(duì)稱加密算法時(shí)應(yīng)用較早的加密算法眯杏,又稱為共享密鑰加密算法夜焦。在對(duì)稱加密算法中,使用的密鑰只有一個(gè)岂贩,發(fā)送和接送雙方都使用這個(gè)密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密茫经。

  1. 數(shù)據(jù)加密過(guò)程:在對(duì)稱加密算法中,數(shù)據(jù)發(fā)送將銘文和加密密鑰一起經(jīng)過(guò)特殊加密處理萎津,生成復(fù)雜的加密密文進(jìn)行發(fā)送

  2. 數(shù)據(jù)解密過(guò)程:數(shù)據(jù)接收方收到密文后卸伞,若相等讀取原數(shù)據(jù),則需要使用加密密鑰及相同的逆算法進(jìn)行解密锉屈,恢復(fù)成明文

非對(duì)稱加密

非對(duì)稱加密算法(公開(kāi)密鑰加密算法)荤傲,它需要2個(gè)密鑰,一個(gè)public Key颈渊,一個(gè)private Key遂黍。因?yàn)榧用芎徒饷苁褂玫氖?個(gè)不通的密鑰,所以這種算法稱為非對(duì)稱加密算法儡炼。

  1. 如果公鑰對(duì)數(shù)據(jù)進(jìn)行加密妓湘。只有對(duì)應(yīng)的私鑰才能進(jìn)行解密
  2. 如果使用私鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有對(duì)應(yīng)的公鑰才能進(jìn)行解密乌询。

比如A用戶生成了一對(duì)密鑰榜贴,然后把公鑰公開(kāi)給B 。B使用公鑰加密發(fā)送給A妹田。A再使用自己保存的私鑰去解密唬党。

常見(jiàn)的簽名加密算法

MD5算法

MD5用的是hash函數(shù),它的典型應(yīng)用是對(duì)一段信息摘要鬼佣,以防止被篡改驶拱,嚴(yán)格來(lái)說(shuō),MD5不是一種加密算法晶衷,而是摘要算法蓝纲,無(wú)論多長(zhǎng)的輸入阴孟,MD5都會(huì)輸出長(zhǎng)度為32個(gè)字符的一個(gè)字符串。

     //采用MD5加密算法
        MessageDigest md = MessageDigest.getInstance("MD5");
        //加密
        byte[] digest = md.digest("123456".getBytes());

SHA1算法

SHA1是和M5一樣的消息摘要算法税迷,然而SHA1比MD5的安全性更強(qiáng)永丝。

 //采用MD5加密算法
        MessageDigest md = MessageDigest.getInstance("SHA1");

HMAC算法

HMAC是密鑰相關(guān)的哈希運(yùn)算消息認(rèn)證碼,HMAC運(yùn)算利用哈希算法箭养,以一個(gè)密鑰和一個(gè)消息未輸入慕嚷,生成一個(gè)消息摘要作為輸出。

HMAC在多線程環(huán)境下是不安全的毕泌。如果需要在多線程訪問(wèn)的時(shí)候喝检,進(jìn)行同步的輔助類,使用ThreadLocal為每個(gè)線程緩存一個(gè)實(shí)例可以避免進(jìn)行鎖操作撼泛。

AES/DES/3DES算法

AES\DES\3DES都是對(duì)稱的塊加密算法發(fā)挠说,加解密的過(guò)程是可逆的,常用的有AES128/AES192/AES256坎弯。

DES算法

DES加密算法是一種分組密碼纺涤,以64位分組對(duì)數(shù)據(jù)加密,它的密鑰長(zhǎng)度是56位抠忘,加密解密用同一算法撩炊。DES加密算法是對(duì)密鑰進(jìn)行保密,而公開(kāi)算法崎脉,包括加密和解密算法拧咳。

3DES算法

基于DES的堆成算法,對(duì)一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密囚灼,強(qiáng)度更高骆膝。

AES加密算法

AES 加密算法是密碼學(xué)中的高級(jí)加密標(biāo)準(zhǔn),該加密算法采用分組密碼體制灶体,密鑰長(zhǎng)度最少支持位128阅签、192、256蝎抽,分組長(zhǎng)度128位政钟,算法應(yīng)易于各種硬件和軟件實(shí)現(xiàn)。AES 本身就是為了取代DES樟结。AES具有更好的安全性养交,效率和靈活性

RSA算法

RSA加密算法是目前最有影響力的公鑰加密算法,并且被普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一瓢宦。RSA是第一個(gè)同時(shí)用于加密和數(shù)字簽名的算法碎连。它能夠抵抗到目前為止已知 的所有密碼攻擊。

ECC算法

ECC也是一種非對(duì)稱加密算法驮履,主要優(yōu)勢(shì)是在某些情況下鱼辙,它比其他的方法使用更下的密鑰廉嚼,比如RSA加密算法,提供相當(dāng)或更高等級(jí)的安全級(jí)別座每。不過(guò)一個(gè)缺點(diǎn)是加密和解密操作的實(shí)現(xiàn)比其他機(jī)制時(shí)間長(zhǎng)前鹅。(CPU消耗嚴(yán)重)

對(duì)稱算法

密鑰管理:比較難,不適合互聯(lián)網(wǎng)峭梳,一般用于內(nèi)部系統(tǒng)。
安全性:中
加密速度:快好幾個(gè)數(shù)量級(jí) (軟件加解密速度至少快 100 倍蹂喻,每秒可以加解密數(shù) M 比特數(shù)據(jù))葱椭,適合大數(shù)據(jù)量的加解密處理。

非對(duì)稱算法

密鑰管理:密鑰容易管理口四。
安全性:高
加密速度:比較慢孵运,適合 小數(shù)據(jù)量加解密或數(shù)據(jù)簽名。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蔓彩,一起剝皮案震驚了整個(gè)濱河市治笨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赤嚼,老刑警劉巖旷赖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異更卒,居然都是意外死亡等孵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蹂空,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)俯萌,“玉大人,你說(shuō)我怎么就攤上這事上枕「牢酰” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵辨萍,是天一觀的道長(zhǎng)棋恼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)分瘦,這世上最難降的妖魔是什么蘸泻? 我笑而不...
    開(kāi)封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮嘲玫,結(jié)果婚禮上悦施,老公的妹妹穿的比我還像新娘。我一直安慰自己去团,他們只是感情好抡诞,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布穷蛹。 她就那樣靜靜地躺著,像睡著了一般昼汗。 火紅的嫁衣襯著肌膚如雪肴熏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天顷窒,我揣著相機(jī)與錄音蛙吏,去河邊找鬼。 笑死鞋吉,一個(gè)胖子當(dāng)著我的面吹牛鸦做,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谓着,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泼诱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了赊锚?” 一聲冷哼從身側(cè)響起治筒,我...
    開(kāi)封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎舷蒲,沒(méi)想到半個(gè)月后耸袜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阿纤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年句灌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欠拾。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胰锌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出藐窄,到底是詐尸還是另有隱情资昧,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布荆忍,位于F島的核電站格带,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏刹枉。R本人自食惡果不足惜叽唱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望微宝。 院中可真熱鬧棺亭,春花似錦、人聲如沸蟋软。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至凄敢,卻和暖如春碌冶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涝缝。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工扑庞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拒逮。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓嫩挤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親消恍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • 上一篇博客介紹了MD5加密算法,MD5加密不可逆的特性決定了在很多場(chǎng)景下并不適用以现。如在某些需要對(duì)加密后的密文進(jìn)行解...
    鐘小明_閱讀 1,379評(píng)論 0 1
  • 概述 加密算法分為單向加密和雙向加密狠怨,明文數(shù)據(jù)通過(guò)加密后傳輸,以確保傳輸和存儲(chǔ)安全 單向加密包括 MD5邑遏、SHA佣赖、...
    聰明的奇瑞閱讀 1,650評(píng)論 0 1
  • 常用的加解密算法分三大類:非對(duì)稱密鑰加密算法、對(duì)稱密鑰加密算法记盒、Hash加密算法 非對(duì)稱密鑰加密算法常見(jiàn)算法:RS...
    茶鋪里的水閱讀 1,802評(píng)論 0 0
  • 寫在前面的話 騰訊大佬問(wèn)的憎蛤,被問(wèn)到了,當(dāng)時(shí)好尷尬... (一)對(duì)稱性加密 1纪吮、MD5加密(無(wú)解密方法俩檬,解密不可逆)...
    趙國(guó)星閱讀 209評(píng)論 0 0
  • RSA:非對(duì)稱的加密算法,加密使用公鑰加密碾盟,解密需要公鑰+私鑰解密AES棚辽,DES:對(duì)稱算法,加密解密使用的是同一個(gè)...
    還是那個(gè)沒(méi)頭腦閱讀 1,220評(píng)論 0 0