国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java 對稱加密幾種算法分別實現(xiàn)

Java 對稱加密幾種算法分別實現(xiàn)

2020-07-23 11:46java教程網 Java教程

這篇文章主要介紹了Java 對稱加密使用DES / 3DES / AES 這三種算法分別實現(xiàn)的相關資料,這里提供了實例代碼,需要的朋友可以參考下

Java 對稱加密使用DES / 3DES / AES 這三種算法分別實現(xiàn)

有兩句話是這么說的:

1)算法和數(shù)據(jù)結構就是編程的一個重要部分,你若失掉了算法和數(shù)據(jù)結構,你就把一切都失掉了。

2)編程就是算法和數(shù)據(jù)結構,算法和數(shù)據(jù)結構是編程的靈魂。

注意,這可不是我說的,是無數(shù)程序員總結的,話說的很實在也很精辟,若想長久可持續(xù)發(fā)展,多研究算法還是很有必要的,今天我給大家說說加密算法中的對稱加密算法,并且這里將教會大家對稱加密算法的編程使用。包含DES、3DES和AES三種對稱加密算法的編程使用,干貨滿滿。

1.對稱密碼算法

對稱密碼算法是當今應用范圍最廣,使用頻率最高的加密算法。它不僅應用于軟件行業(yè),在硬件行業(yè)同樣流行。各種基礎設施凡是涉及到安全需求,都會優(yōu)先考慮對稱加密算法。

對稱密碼算法的加密密鑰和解密密鑰相同,對于大多數(shù)對稱密碼算法,加解密過程互逆。

(1)加解密通信模型

Java 對稱加密幾種算法分別實現(xiàn)

(2)特點:算法公開、計算量小、加密速度快、加密效率高

(3)弱點:雙方都使用同樣密鑰,安全性得不到保證

對稱密碼有流密碼和分組密碼兩種,但是現(xiàn)在普遍使用的是分組密碼:

(4)分組密碼工作模式

1)ECB:電子密碼本(最常用的,每次加密均產生獨立的密文分組,并且對其他的密文分組不會產生影響,也就是相同的明文加密后產生相同的密文)
2)CBC:密文鏈接(常用的,明文加密前需要先和前面的密文進行異或運算,也就是相同的明文加密后產生不同的密文)

除了這兩種常用的工作模式,還有:

3)CFB:密文反饋
4)OFB:輸出反饋
5)CTR:計數(shù)器

這五種工作模式主要是密碼學中算法在進行推導演算的時候所應用到的。

6.分組密碼填充方式

1)NoPadding:無填充
2)PKCS5Padding:
3)ISO10126Padding:

7.常用對稱密碼:

1)DES(Data Encryption Standard,數(shù)據(jù)加密標準)
2)3DES(Triple DES、DESede,進行了三重DES加密的算法)
3)AES(Advanced Encryption Standard,高級數(shù)據(jù)加密標準,AES算法可以有效抵制針對DES的攻擊算法)

先來看一下這三種算法的簡單對比:

 

算法 密鑰長度 默認密鑰長度 工作模式 填充方式
DES 56 56 ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128 NoPadding、PKCS5Padding、ISO10126Padding
3DES 112、168 168 ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128 NoPadding、PKCS5Padding、ISO10126Padding
AES 128、192、256 128 ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128 NoPadding、PKCS5Padding、ISO10126Padding

 

下面我們看如何使用 DES / 3DES / AES 三種算法實現(xiàn) 對稱加密:

2.DES算法

1.DES:數(shù)據(jù)加密標準,是對稱加密算法領域中的典型算法

2.特點:密鑰偏短(56位)、生命周期短(避免被破解)

3.Java實現(xiàn)

1)生成密鑰

?
1
2
3
4
KeyGenerator keyGen = KeyGenerator.getInstance("DES");//密鑰生成器
keyGen.init(56);//初始化密鑰生成器
SecretKey secretKey = keyGen.generateKey();//生成密鑰
byte[] key = secretKey.getEncoded();//密鑰字節(jié)數(shù)組

2)加密

?
1
2
3
4
SecretKey secretKey = new SecretKeySpec(key, "DES");//恢復密鑰
Cipher cipher = Cipher.getInstance("DES");//Cipher完成加密或解密工作類
cipher.init(Cipher.ENCRYPT_MODE, secretKey);//對Cipher初始化,加密模式
byte[] cipherByte = cipher.doFinal(data);//加密data

3)解密

?
1
2
3
4
SecretKey secretKey = new SecretKeySpec(key, "DES");//恢復密鑰
Cipher cipher = Cipher.getInstance("DES");//Cipher完成加密或解密工作類
cipher.init(Cipher.DECRYPT_MODE, secretKey);//對Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//解密data

我們可以發(fā)現(xiàn),加密解密我們只是設置了不同的模式而已。

3.3DES算法

1.3DES:將密鑰長度增至112位或168位,通過增加迭代次數(shù)提高安全性

2.缺點:處理速度較慢、密鑰計算時間較長、加密效率不高

3.Java實現(xiàn)

1)生成密鑰

?
1
2
3
4
KeyGenerator keyGen = KeyGenerator.getInstance("DESede");//密鑰生成器
keyGen.init(168); //可指定密鑰長度為112或168,默認為168 
SecretKey secretKey = keyGen.generateKey();//生成密鑰
byte[] key = secretKey.getEncoded();//密鑰字節(jié)數(shù)組

2)3DES加密

?
1
2
3
4
SecretKey secretKey = new SecretKeySpec(key, "DESede");//恢復密鑰
Cipher cipher = Cipher.getInstance("DESede");//Cipher完成加密或解密工作類
cipher.init(Cipher.ENCRYPT_MODE, secretKey);//對Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//加密data

3)3DES解密

?
1
2
3
4
SecretKey secretKey = new SecretKeySpec(key, "DESede");//恢復密鑰
Cipher cipher = Cipher.getInstance("DESede");//Cipher完成加密或解密工作類
cipher.init(Cipher.DECRYPT_MODE, secretKey);//對Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//解密data

4.AES算法(推薦使用)

1.AES:高級數(shù)據(jù)加密標準,能夠有效抵御已知的針對DES算法的所有攻擊

2.特點:密鑰建立時間短、靈敏性好、內存需求低、安全性高

3.Java實現(xiàn)

1)生成密鑰

?
1
2
3
4
KeyGenerator keyGen = KeyGenerator.getInstance("AES");//密鑰生成器
keygen.init(128); //默認128,獲得無政策權限后可為192或256
SecretKey secretKey = keyGen.generateKey();//生成密鑰
byte[] key = secretKey.getEncoded();//密鑰字節(jié)數(shù)組

2)AES加密

?
1
2
3
4
SecretKey secretKey = new SecretKeySpec(key, "AES");//恢復密鑰
Cipher cipher = Cipher.getInstance("AES");//Cipher完成加密或解密工作類
cipher.init(Cipher.ENCRYPT_MODE, secretKey);//對Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//加密data

3)AES解密

?
1
2
3
4
SecretKey secretKey = new SecretKeySpec(key, "AES");//恢復密鑰
Cipher cipher = Cipher.getInstance("AES");//Cipher完成加密或解密工作類
cipher.init(Cipher.DECRYPT_MODE, secretKey);//對Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//解密data

為了方便使用,我對DES / 3DES / AES 三種算法進行了工具類編寫,

地址:Android-UtilsLibrary-master.rar(新增DES/3DES/AES工具類)。

到此,DES / 3DES / AES 三種算法實現(xiàn) 對稱加密 就說完了.

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/smartbetter/article/details/54017759

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美大黄大色一级毛片 | 久久精品免费 | 91一区二区在线 | 国产区一区 | 91电影在线看 | 蜜桃一二三区 | 欧美一区二区三区电影 | 亚洲精品久久久蜜桃 | 黄色片视频免费 | 精品久久久久久久久久 | 黄色片免费在线观看视频 | 欧美日韩精品电影 | 久久99久久99精品免视看婷婷 | 一级a性色生活片毛片 | 日韩视频免费看 | 日韩欧美在线观看 | 丝袜+亚洲+另类+欧美+变态 | 一区二区不卡视频 | 国产欧美精品一区二区三区四区 | 欧美激情在线精品一区二区三区 | 午夜精品一区二区三区在线视频 | 欧美在线免费观看 | 88888888国产一区二区 | 国产在线综合网 | 蜜桃精品久久久久久久免费影院 | 黄毛片| 久久av一区二区 | 精品免费视频 | 亚洲精品久久久久久久久久久久久 | 成人久久久久久久久 | 亚洲欧美日韩精品 | 精品久久久久久久久久久久 | 天堂v视频永久在线播放 | 免费观看毛片 | 欧美一区二区三区在线观看 | 成年人毛片视频 | 亚洲综合一区在线观看 | 欧美日韩久久精品 | 国产激情在线 | 亚洲国产精品尤物yw在线观看 | 国产一区视频网站 |