介紹對稱加密演算法,最常用的莫過於DES資料加密演算法

2022-09-07 02:42:12 字數 3118 閱讀 7781

des

des-data encryption

standard,即資料加密演算法。是ibm公司於2023年研究成功並公開發表的。des演算法的入口引數有三個:key、data、mode。其中key為8個位元組共64位,是des演算法的工作金鑰;data也為8個位元組64位,是要被加密或被解密的資料;mode為des的工作方式,有兩種:加密或解密。

des演算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的金鑰也是64位。

通過j**a**實現如下:coder類見 j**a加密技術(一)

j**a**  

import j**a.security.key;  

import j**a.security.securerandom;  

import j**ax.crypto.cipher;  

import j**ax.crypto.keygenerator;  

import j**ax.crypto.secretkey;  

import j**ax.crypto.secretkeyfactory;  

import j**ax.crypto.spec.deskeyspec;  

/** 

* des安全編碼元件 

*  *

* 支援 des、desede(tripledes,就是3des)、aes、blowfish、rc2、rc4(arcfour) 

* des                  key size must be equal to 56 

* desede(tripledes)    key size must be equal to 112 or 168 

* aes                  key size must be equal to 128, 192 or 256,but 192 and 256 bits may not be **ailable 

* blowfish             key size must be multiple of 8, and can only range from 32 to 448 (inclusive) 

* rc2                  key size must be between 40 and 1024 bits 

* rc4(arcfour)         key size must be between 40 and 1024 bits 

* 具體內容 需要關注 jdk document http://.../docs/technotes/guides/security/sunproviders.html 

*

*  * @author 梁棟 

* @version 1.0 

* @since 1.0 

*/  

public abstract class descoder extends coder   

/** 

* 解密 

*  * @param data 

* @param key 

* @return 

* @throws exception 

*/  

public static byte decrypt(byte data, string key) throws exception   

/** 

* 加密 

*  * @param data 

* @param key 

* @return 

* @throws exception 

*/  

public static byte encrypt(byte data, string key) throws exception   

/** 

* 生成金鑰 

*  * @return 

* @throws exception 

*/  

public static string initkey() throws exception   

/** 

* 生成金鑰 

*  * @param seed 

* @return 

* @throws exception 

*/  

public static string initkey(string seed) throws exception  else   

keygenerator kg = keygenerator.getinstance(algorithm);  

kg.init(securerandom);  

secretkey secretkey = kg.generatekey();  

return encryptbase64(secretkey.getencoded());  

}  }  

延續上乙個類的實現,我們通過md5以及sha對字串加密生成金鑰,這是比較常見的金鑰生成方式。

再給出乙個測試類:

j**a**  

import static org.junit.assert.*;  

import org.junit.test;  

/** 

*  * @author 梁棟 

* @version 1.0 

* @since 1.0 

*/  

public class descodertest   

}  得到的輸出內容如下:

console**  

原文: des  

金鑰: f3wetrrv6q0=  

加密後:    c6qe9onizry=  

解密後:    des  

由控制台得到的輸出,我們能夠比對加密、解密後結果一致。這是一種簡單的加密解密方式,只有乙個金鑰。

其實des有很多同胞兄弟,如desede(tripledes)、aes、blowfish、rc2、rc4(arcfour)。這裡就不過多闡述了,大同小異,只要換掉algorithm換成對應的值,同時做乙個**替換secretkey secretkey = new secretkeyspec(key, algorithm);就可以了,此外就是金鑰長度不同了。

對稱加密演算法和非對稱加密演算法的區別

1.對稱加密演算法加密和解密使用的金鑰的是相同的,也就是只有乙個金鑰,而非對稱加密演算法有兩個金鑰,也就是加密和解密所使用的金鑰是不同的 2.各自演算法不同 3.對稱加密演算法加密速度快 相對的 非對稱演算法,金鑰成對生成,公鑰對外發布,但是對大資料的加解密速度比對稱演算法慢。4.還有就是安全性不同...

常用對稱加密演算法(DES AES)類(PHP)

常用對稱加密演算法類 支援金鑰 64 128 256 bit 位元組長度8 16 32 支援演算法 des aes 根據金鑰長度自動匹配使用 des 64bit aes 128 256bit 支援模式 cbc ecb ofb cfb 密文編碼 base64字串 十六進製制字串 二進位制字串流 填充方...

常用對稱加密演算法(DES AES)類(PHP)

看注釋,啥也不說了,歡迎各種跨平台測試!常用對稱加密演算法類 支援金鑰 64 128 256 bit 位元組長度8 16 32 支援演算法 des aes 根據金鑰長度自動匹配使用 des 64bit aes 128 256bit 支援模式 cbc ecb ofb cfb 密文編碼 base64字串...