Java使用AES加密和解密的實(shí)例詳解
前言:
AES的基本要求是,采用對(duì)稱分組密碼體制,密鑰長(zhǎng)度的最少支持為128、192、256,分組長(zhǎng)度128位,算法應(yīng)易于各種硬件和軟件實(shí)現(xiàn)。1998年NIST開始AES第一輪分析、測(cè)試和征集,共產(chǎn)生了15個(gè)候選算法。1999年3月完成了第二輪AES2的分析、測(cè)試。2000年10月2日美國(guó)政府正式宣布選中比利時(shí)密碼學(xué)家Joan Daemen 和 Vincent Rijmen 提出的一種密碼算法RIJNDAEL 作為 AES. 在應(yīng)用方面,盡管DES在安全上是脆弱的,但由于快速DES芯片的大量生產(chǎn),使得DES仍能暫時(shí)繼續(xù)使用,為提高安全強(qiáng)度,通常使用獨(dú)立密鑰的三級(jí)DES。但是DES遲早要被AES代替。流密碼體制較之分組密碼在理論上成熟且安全,但未被列入下一代加密標(biāo)準(zhǔn)。
AES加密數(shù)據(jù)塊和密鑰長(zhǎng)度可以是128比特、192比特、256比特中的任意一個(gè)。
AES加密有很多輪的重復(fù)和變換。大致步驟如下:
1、密鑰擴(kuò)展(KeyExpansion),
2、初始輪(Initial Round),
3、重復(fù)輪(Rounds),每一輪又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,
4、最終輪(Final Round),最終輪沒(méi)有MixColumns。
AES是一種對(duì)稱的加密算法,可基于相同的密鑰進(jìn)行加密和解密。Java采用AES算法進(jìn)行加解密的邏輯大致如下:
1、生成/獲取密鑰
2、加/解密
1.1生成密鑰
密鑰的生成是通過(guò)KeyGenerator來(lái)生成的。通過(guò)獲取一個(gè)KeyGenerator實(shí)例,然后調(diào)用其generateKey()方法即可生成一個(gè)SecretKey對(duì)象。大致邏輯一般如下:
private SecretKey geneKey() throws Exception { //獲取一個(gè)密鑰生成器實(shí)例 KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM); SecureRandom random = new SecureRandom(); random.setSeed("123456".getBytes());//設(shè)置加密用的種子,密鑰 keyGenerator.init(random); SecretKey secretKey = keyGenerator.generateKey(); return secretKey; }
文章題目:Java使用AES加密和解密的實(shí)例詳解-創(chuàng)新互聯(lián)
本文路徑:http://jinyejixie.com/article18/dpcidp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站建設(shè)、定制開發(fā)、網(wǎng)站營(yíng)銷、小程序開發(fā)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容