[转:http://liulang203.iteye.com/blog/1028257]
一、DES算法
设置算法及参数
- //算法名称
- public static final String KEY_ALGORITHM = "DES";
- //算法名称/加密模式/填充方式
- public static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5Padding";
生成密钥
- KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_ALGORITHM);
- keyGenerator.init(56);
- SecretKey secretKey = keyGenerator.generateKey();
- return secretKey.getEncoded();
还原密钥
- private static Key toKey(byte[] key) {
- DESKeySpec des = new DESKeySpec(key);
- SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(KEY_ALGORITHM);
- SecretKey secretKey = keyFactory.generateSecret(des);
- return secretKey;
- }
加密
- public static byte[] encrypt(byte[] data ,byte[] key) {
- Key k = toKey(key);
- Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
- cipher.init(Cipher.ENCRYPT_MODE, k);
- return cipher.doFinal();
- }
解密
- Key k = toKey(key);
- Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
- cipher.init(Cipher.DECRYPT_MODE, k);
- return cipher.doFinal();
注:加密和解密的区别在于init初始化时模式
二、三重DES---DESede
其过程同上只需把变声明算法改变一下,Java6支持的密钥长度为112或168
- //算法名称
- public static final String KEY_ALGORITHM = "DESede";
- //算法名称/加密模式/填充方式
- public static final String CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";
还原密钥
- DESedeKeySpec des = new DESedeKeySpec(key);
- SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(KEY_ALGORITHM);
- SecretKey secretKey = keyFactory.generateSecret(des);
三、AES算法
同DES基本一致。
- public static final String KEY_ALGORITHM = "AES";
- public static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
- private static Key toKey(byte[] key){
- SecretKey secretKey = new SecretKeySpec(key, KEY_ALGORITHM);
- return secretKey;
- }
四、IDEA 同AES算法一致。
- public static final String KEY_ALGORITHM = "IDEA";
- public static final String CIPHER_ALGORITHM = "IDEA/ECB/PKCS5Padding";
- private static Key toKey(byte[] key){
- SecretKey secretKey = new SecretKeySpec(key, KEY_ALGORITHM);
- return secretKey;
- }
五、基本口令加密---PBE
- import java.security.Key;
- import java.security.SecureRandom;
- import javax.crypto.Cipher;
- import javax.crypto.SecretKey;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.PBEKeySpec;
- import javax.crypto.spec.PBEParameterSpec;
- public class PBECode {
- public static final String ALGORITHM = "PBEWITHMD5andDES";
- //迭代次数
- public static final int ITERATION_COUNT = 100;
- /**
- * 盐初始化<br>
- * 盐长度必须为8字节
- * @return byte[] 盐
- */
- public static byte[] initSalt(){
- //实例化安全随机数
- SecureRandom random = new SecureRandom();
- //生产盐
- return random.generateSeed(8);
- }
- /**
- * 转换密钥
- * @param password 密码
- * @return key 密钥
- * @throws Exception
- */
- private static Key toKey(String password)throws Exception{
- //密钥材料转换
- PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
- //实例化
- SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
- SecretKey secretKey = keyFactory.generateSecret(keySpec);
- return secretKey;
- }
- /**
- * 加密
- * @param data 数据
- * @param password 密码
- * @param salt 盐
- * @return byte[] 加密数据
- * @throws Exception
- */
- public static byte[] encrypt(byte[] data,String password,byte[] salt) throws Exception{
- Key key = toKey(password);
- //实例化PBE参数材料
- PBEParameterSpec parameterSpec = new PBEParameterSpec(salt, ITERATION_COUNT);
- Cipher cipher = Cipher.getInstance(ALGORITHM);
- cipher.init(Cipher.ENCRYPT_MODE, key,parameterSpec);
- return cipher.doFinal(data);
- }
- public static byte[] decrypt(byte[] data, String password,byte[] salt) throws Exception{
- Key key = toKey(password);
- //实例化PBE参数材料
- PBEParameterSpec parameterSpec = new PBEParameterSpec(salt, ITERATION_COUNT);
- Cipher cipher = Cipher.getInstance(ALGORITHM);
- cipher.init(Cipher.DECRYPT_MODE, key,parameterSpec);
- return cipher.doFinal(data);
- }
- }
相关推荐
本人总结了一些对称的加密算法,希望可以给一些朋友带来帮助!!
Java对称加密算法DES实例详解 Java对称加密算法是使用对称密钥进行加密和解密的加密算法,其加密和解密使用相同的密钥。Java中对称加密算法有多种,而DES(Data Encryption Standard)是其中一种古老的对称加密...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
"Java实现的对称加密算法AES定义与用法详解" 对称加密算法AES是当前使用最多的加密算法之一,其主要特点是高级的、安全的、快速的和灵活的。下面我们将详细介绍Java实现的对称加密算法AES的定义、特点、用法及使用...
非对称加密算法和数字签名是信息技术中两个关键...总之,非对称加密算法和数字签名是保障网络通信安全的重要工具,Java提供了丰富的库支持这些功能的实现。理解并熟练运用这些技术,对于开发安全的应用和系统至关重要。
这是本人总结的Java 非对称 加密 算法,有疑问可以找我1038546502@qq.com
本资料包“对称加密算法分析及用Java实现.zip”包含了关于这一主题的详细内容,特别是如何使用Java编程语言来实现对称加密算法。 对称加密算法的核心特点是加密和解密使用相同的密钥,这简化了密钥管理,但也带来了...
RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数据传输中的安全保护。这个RAR压缩包包含了一个名为“Rsa.java”的源代码文件,可能是用于演示如何在Java环境中实现RSA算法。另一个文件...
1. **AES(Advanced Encryption Standard)**:高级加密标准,是一种对称加密算法,因其高效性和安全性被广泛应用。AESUtil.java可能是实现AES加密解密功能的工具类,通常包括AES的ECB、CBC、CFB、OFB和CTR模式,...
对称加密算法包括了多种算法,本文主要介绍DES、3DES和AES这三种常见的对称加密算法,并对它们进行Java实现的总结。 首先,对称加密算法的一个关键优势在于其算法公开、计算量小、加密速度快、加密效率高,但它们也...
Java 对称加密算法实现详解 Java 对称加密算法是指加密和解密方式呈对称格式,即解密是加密的逆过程。Java 中有多种对称加密算法,包括 DES、3DES、AES、PBE 等。下面我们将详细介绍这些算法的实现。 一、DES 算法...
而非对称加密算法则采用了一对密钥,包括一个公钥和一个私钥。公钥可以公开给任何人,用于加密数据;而私钥必须保密,用于解密数据。这种设计使得即使公钥被他人获取,也无法解密由私钥加密的信息,极大地增强了通信...
《对称加密算法Blowfish在Java环境中的应用》 对称加密算法是信息安全领域中的一种基础技术,它以其高效性和简洁性广泛应用于数据保护。Blowfish算法作为其中的一员,由 Bruce Schneier 在1993年设计,以其优秀的...
JAVA对称加密算法PBE定义与用法实例分析 JAVA对称加密算法PBE(Password Based Encryption,即基于口令加密)是一种常用的加密算法,它通过将口令转换为密钥,然后使用该密钥对数据进行加密。PBE算法优点在于可以...
一个来自Java非对称加密算法演示源码,通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,将公钥的KeySpec对象转换为公钥,张三用自己的私钥解密从李四处收到的信息,里面对原理的...
对称加密算法使用同一个密钥进行加密和解密操作,而非对称加密算法则需要一对密钥——公钥用于加密,而私钥用于解密。 ##### 2.1 对称加密算法 对称加密算法因其高效性和易于实现的特点,在日常应用中非常普遍。...
DES算法为密码体制中的对称密码体制,是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。 这里以Java代码实现DES算法。
Java中常见的对称加密算法包括: - DES(Data Encryption Standard):一种古老的64位块加密算法,已被AES取代。 - 3DES(Triple DES):对DES进行了三次加密,提高了安全性,但速度较慢。 - AES(Advanced ...
Java中内置了DES(Data Encryption Standard)、3DES(Triple DES)以及AES(Advanced Encryption Standard)等对称加密算法。 - **DES**:是一种古老的加密算法,使用64位的密钥,但实际有效密钥长度只有56位,...