java實現AES的簡單加密解密

AESUtil

[java]?view plain?copy

package?com.zhuyun.aes;??


import?java.io.IOException;??


import?javax.crypto.Cipher;??

import?javax.crypto.KeyGenerator;??

import?javax.crypto.SecretKey;??

import?javax.crypto.spec.SecretKeySpec;??


import?sun.misc.BASE64Decoder;??

import?sun.misc.BASE64Encoder;??


public?class?AESUtil?{??

//生成AES秘鑰,然后Base64編碼??

public?static?String?genKeyAES()?throws?Exception{??

KeyGenerator?keyGen?=?KeyGenerator.getInstance("AES");??

keyGen.init(128);??

????????SecretKey?key?=?keyGen.generateKey();??

????????String?base64Str?=?byte2Base64(key.getEncoded());??

return?base64Str;??

????}??


//將Base64編碼后的AES秘鑰轉換成SecretKey對象??

public?static?SecretKey?loadKeyAES(String?base64Key)?throws?Exception{??

byte[]?bytes?=?base642Byte(base64Key);??

SecretKeySpec?key?=new?SecretKeySpec(bytes,?"AES");??

return?key;??

????}??


//字節(jié)數組轉Base64編碼??

public?static?String?byte2Base64(byte[]?bytes){??

BASE64Encoder?encoder?=new?BASE64Encoder();??

return?encoder.encode(bytes);??

????}??


//Base64編碼轉字節(jié)數組??

public?static?byte[]?base642Byte(String?base64Key)?throws?IOException{??

BASE64Decoder?decoder?=new?BASE64Decoder();??

return?decoder.decodeBuffer(base64Key);??

????}??


//加密??

public?static?byte[]?encryptAES(byte[]?source,?SecretKey?key)?throws?Exception{??

Cipher?cipher?=?Cipher.getInstance("AES");??

????????cipher.init(Cipher.ENCRYPT_MODE,?key);??

return?cipher.doFinal(source);??

????}??


//解密??

public?static?byte[]?decryptAES(byte[]?source,?SecretKey?key)?throws?Exception{??

Cipher?cipher?=?Cipher.getInstance("AES");??

????????cipher.init(Cipher.DECRYPT_MODE,?key);??

return?cipher.doFinal(source);??

????}??

}??

TestAES

[java]?view plain?copy

package?com.zhuyun.test;??


import?javax.crypto.SecretKey;??


import?org.junit.Test;??


import?com.zhuyun.aes.AESUtil;??


public?class?TestAES?{??


@Test??

public?void?testAES(){??

try?{??

//=================客戶端=================??

//hello,?i?am?infi,?good?night!加密??

String?message?="hello,?i?am?infi,?good?night!";??

//生成AES秘鑰特铝,并Base64編碼??

????????????String?base64Str?=?AESUtil.genKeyAES();??

System.out.println("AES秘鑰Base64編碼:"?+?base64Str);??

//將Base64編碼的字符串论悴,轉換成AES秘鑰??

????????????SecretKey?aesKey?=?AESUtil.loadKeyAES(base64Str);??

//加密??

byte[]?encryptAES?=?AESUtil.encryptAES(message.getBytes(),?aesKey);??

//加密后的內容Base64編碼??

????????????String?byte2Base64?=?AESUtil.byte2Base64(encryptAES);??

System.out.println("加密并Base64編碼的結果:"?+?byte2Base64);??



//##############????網絡上傳輸的內容有Base64編碼后的秘鑰?和?Base64編碼加密后的內容??????#################??



//===================服務端================??

//將Base64編碼的字符串畴蹭,轉換成AES秘鑰??

????????????SecretKey?aesKey2?=?AESUtil.loadKeyAES(base64Str);??

//加密后的內容Base64解碼??

byte[]?base642Byte?=?AESUtil.base642Byte(byte2Base64);??

//解密??

byte[]?decryptAES?=?AESUtil.decryptAES(base642Byte,?aesKey2);??

//解密后的明文??

System.out.println("解密后的明文:?"?+?new?String(decryptAES));??

}catch?(Exception?e)?{??

????????????e.printStackTrace();??

????????}??

????}??


}??

測試結果為:

[java]?view plain?copy

AES秘鑰Base64編碼:UrlSOS8igqefseqoeJUwbg==??

加密并Base64編碼的結果:7QXSwDckiqIWz1SfpAG48++ex3Zcjv92Uhl5zppqjTQ=??

解密后的明文:?hello,?i?am?infi,?good?night!??

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末惕耕,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子驱敲,更是在濱河造成了極大的恐慌热凹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件排吴,死亡現場離奇詭異秆乳,居然都是意外死亡,警方通過查閱死者的電腦和手機钻哩,發(fā)現死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門屹堰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人街氢,你說我怎么就攤上這事扯键。” “怎么了阳仔?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵忧陪,是天一觀的道長。 經常有香客問我近范,道長嘶摊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任评矩,我火速辦了婚禮叶堆,結果婚禮上,老公的妹妹穿的比我還像新娘斥杜。我一直安慰自己虱颗,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布蔗喂。 她就那樣靜靜地躺著忘渔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缰儿。 梳的紋絲不亂的頭發(fā)上畦粮,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼宣赔。 笑死预麸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的儒将。 我是一名探鬼主播吏祸,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钩蚊!你這毒婦竟也來了贡翘?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤砰逻,失蹤者是張志新(化名)和其女友劉穎床估,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體诱渤,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡丐巫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了勺美。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片递胧。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赡茸,靈堂內的尸體忽然破棺而出缎脾,到底是詐尸還是另有隱情,我是刑警寧澤占卧,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布遗菠,位于F島的核電站,受9級特大地震影響华蜒,放射性物質發(fā)生泄漏辙纬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一叭喜、第九天 我趴在偏房一處隱蔽的房頂上張望贺拣。 院中可真熱鬧,春花似錦捂蕴、人聲如沸譬涡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涡匀。三九已至,卻和暖如春溉知,著一層夾襖步出監(jiān)牢的瞬間陨瘩,已是汗流浹背腊嗡。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拾酝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓卡者,卻偏偏與公主長得像蒿囤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子崇决,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容

  • 本文主要是前面《java實現雙向RSA + AES加密》的補充材诽,只補充新增的代碼, JDK中自帶了橢圓曲線的簽名恒傻,...
    終結者_8d5e閱讀 3,785評論 0 1
  • 引言 如今手機app五彩繽紛盈厘,確保手機用戶的數據安全是開發(fā)人員必須掌握的技巧睁枕,下面通過實例介紹DES在androi...
    freesan44閱讀 1,138評論 1 1
  • 概述 之前一直對加密相關的算法知之甚少,只知道類似DES沸手、RSA等加密算法能對數據傳輸進行加密外遇,且各種加密算法各有...
    Henryzhu閱讀 3,019評論 0 14
  • Base64.java public final class Base64 { static private ...
    BUG弄潮兒閱讀 799評論 0 0
  • 戴恩死了,拉爾夫也死了契吉,弗蘭克跳仿,菲奧納,梅吉捐晶,朱絲婷………每個人都如一只荊棘鳥菲语,盡管知道會痛,但都毫不猶豫的人將荊...
    桂魄流光閱讀 265評論 0 0