java加密解密實用技術

加密解密,曾經是我一個畢業(yè)設計的重要組件烟馅。在工作了多年以后回想當時那個加密说庭、解密算法,實在是太單純了郑趁。

言歸正傳刊驴,這里我們主要描述Java已經實現的一些加密解密算法,最后介紹數字證書。

如基本的單向加密算法:

BASE64 嚴格地說捆憎,屬于編碼格式舅柜,而非加密算法

MD5(Message Digest algorithm 5,信息摘要算法)

SHA(Secure Hash Algorithm躲惰,安全散列算法)

HMAC(Hash Message Authentication Code致份,散列消息鑒別碼)

復雜的對稱加密(DES、PBE)础拨、非對稱加密算法:

DES(Data Encryption Standard知举,數據加密算法)

PBE(Password-based encryption,基于密碼驗證)

RSA(算法的名字以發(fā)明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)

DH(Diffie-Hellman算法太伊,密鑰一致協(xié)議)

DSA(Digital Signature Algorithm,數字簽名)

ECC(Elliptic Curves Cryptography逛钻,橢圓曲線密碼編碼學)

本篇內容簡要介紹

BASE64僚焦、MD5、SHA曙痘、HMAC幾種方法芳悲。

MD5、SHA边坤、HMAC這三種加密算法名扛,可謂是非可逆加密,就是不可解密的加密方法茧痒。我們通常只把們作為加密的基礎肮韧。單純的以上三種的加密并不可靠。

BASE64

按照RFC2045的定義旺订,Base64被定義為:Base64內容傳送編碼被設計用來把任意序列的8位字節(jié)描述為一種不易被人直接識別的形式弄企。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)

常見于郵件、http加密区拳,截取http信息拘领,你就會發(fā)現登錄操作的用戶名、密碼字段通過BASE64加密的樱调。


通過java代碼實現如下:

Java代碼


主要就是BASE64Encoder约素、BASE64Decoder兩個類,我們只需要知道使用對應的方法即可笆凌。另圣猎,BASE加密后產生的字節(jié)位數是8的倍數,如果不夠位數以=符號填充菩颖。

MD5

MD5 -- message-digest algorithm 5 (信息-摘要算法)縮寫样漆,廣泛用于加密和解密技術,常用于文件校驗晦闰。校驗放祟?不管文件多大鳍怨,經過MD5后都能生成唯一的MD5值。好比現在的ISO校驗跪妥,都是MD5校驗鞋喇。怎么用?當然是把ISO經過MD5后產生MD5的值眉撵。一般下載linux-ISO的朋友都見過下載鏈接旁邊放著MD5的串侦香。就是用來驗證文件是否一致的。


通過java代碼實現如下:

Java代碼


通常我們不直接使用上述MD5加密纽疟。通常將MD5產生的字節(jié)數組交給BASE64再加密一把罐韩,得到相應的字符串。

SHA

SHA(Secure Hash Algorithm污朽,安全散列算法)散吵,數字簽名等密碼學應用中重要的工具,被廣泛地應用于電子商務等信息安全領域蟆肆。雖然矾睦,SHA與MD5通過碰撞法都被破解了,

但是SHA仍然是公認的安全加密算法炎功,較之MD5更為安全枚冗。


通過java代碼實現如下:

Java代碼


HMAC

HMAC(Hash Message Authentication Code,散列消息鑒別碼蛇损,基于密鑰的Hash算法的認證協(xié)議赁温。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識州藕,用這個標識鑒別消息的完整性束世。使用一個密鑰生成一個固定大小的小數據塊,即MAC床玻,并將其加入到消息中毁涉,然后傳輸。接收方利用與發(fā)送方共享的密鑰進行鑒別認證等锈死。


通過java代碼實現如下:

Java代碼


給出一個完整類贫堰,如下:


再給出一個測試類:

Java代碼


控制臺輸出:

Console代碼


注意

編譯時,可能會看到如下提示:

引用


BASE64Encoder和BASE64Decoder是非官方JDK實現類待牵。雖然可以在JDK里能找到并使用其屏,但是在API里查不到。JRE 中 sun 和 com.sun 開頭包的類都是未被文檔化的缨该,他們屬于 java, javax 類庫的基礎偎行,其中的實現大多數與底層平臺有關,一般來說是不推薦使用的。

BASE64的加密解密是雙向的蛤袒,可以求反解熄云。

MD5、SHA以及HMAC是單向加密妙真,任何數據加密后只會產生唯一的一個加密串缴允,通常用來校驗數據在傳輸過程中是否被修改。其中HMAC算法有一個密鑰珍德,增強了數據傳輸過程中的安全性练般,強化了算法外的不可控因素。

單向加密的用途主要是為了校驗數據在傳輸過程中是否被修改锈候。

相關鏈接:

Java加密技術(一)——BASE64與單向加密算法MD5&SHA&MAC

Java加密技術(二)——對稱加密算法DES&AES

Java加密技術(三)——PBE算法

Java加密技術(四)——非對稱加密算法RSA

Java加密技術(五)——非對稱加密算法的由來DH

Java加密技術(六)——數字簽名算法DSA

Java加密技術(七)——非對稱加密算法最高ECC

Java加密技術(八)——數字證書

Java加密技術(九)——初探SSL

Java加密技術(十)——單向認證

Java加密技術(十一)——雙向認證

Java加密技術(十二)——*.PFX(*.p12)&個人信息交換文件

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末薄料,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子泵琳,更是在濱河造成了極大的恐慌都办,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虑稼,死亡現場離奇詭異,居然都是意外死亡势木,警方通過查閱死者的電腦和手機蛛倦,發(fā)現死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啦桌,“玉大人溯壶,你說我怎么就攤上這事「δ校” “怎么了且改?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長板驳。 經常有香客問我又跛,道長,這世上最難降的妖魔是什么若治? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任慨蓝,我火速辦了婚禮,結果婚禮上端幼,老公的妹妹穿的比我還像新娘礼烈。我一直安慰自己,他們只是感情好婆跑,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布此熬。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪犀忱。 梳的紋絲不亂的頭發(fā)上募谎,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音峡碉,去河邊找鬼近哟。 笑死,一個胖子當著我的面吹牛鲫寄,可吹牛的內容都是我干的吉执。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼地来,長吁一口氣:“原來是場噩夢啊……” “哼戳玫!你這毒婦竟也來了?” 一聲冷哼從身側響起未斑,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤咕宿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜡秽,有當地人在樹林里發(fā)現了一具尸體府阀,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年芽突,在試婚紗的時候發(fā)現自己被綠了试浙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡寞蚌,死狀恐怖田巴,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情挟秤,我是刑警寧澤壹哺,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站艘刚,受9級特大地震影響管宵,放射性物質發(fā)生泄漏。R本人自食惡果不足惜攀甚,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一啄糙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧云稚,春花似錦隧饼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诞丽。三九已至,卻和暖如春拐格,著一層夾襖步出監(jiān)牢的瞬間僧免,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工捏浊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留懂衩,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓金踪,卻偏偏與公主長得像浊洞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胡岔,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容

  • 這篇文章主要講述在Mobile BI(移動商務智能)開發(fā)過程中法希,在網絡通信、數據存儲靶瘸、登錄驗證這幾個方面涉及的加密...
    雨_樹閱讀 2,423評論 0 6
  • 本文主要介紹移動端的加解密算法的分類苫亦、其優(yōu)缺點特性及應用,幫助讀者由淺入深地了解和選擇加解密算法怨咪。文中會包含算法的...
    蘋果粉閱讀 11,503評論 5 29
  • 由于計算機軟件的非法復制屋剑,通信的泄密、數據安全受到威脅诗眨,解密及盜版問題日益嚴重饼丘,甚至引發(fā)國際爭端,所以在信息安全技...
    慕涵盛華閱讀 2,540評論 0 4
  • 在開發(fā)應用過程中辽话,客戶端與服務端經常需要進行數據傳輸,涉及到重要隱私安全信息時卫病,開發(fā)者自然會想到對其進行加密油啤,即使...
    閑庭閱讀 3,269評論 0 11
  • 2017年6月6日益咬,晚,23點02分帜平。距離2017年高考開場還有9小時58分幽告。距離2013年高考已經過了將近四年。...
    長思長安閱讀 449評論 0 1