一、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关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
主要介绍了Java实现的对称加密算法AES,结合实例形式分析了对称加密算法AES的定义、特点、用法及使用场景,需要的朋友可以参考下
JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现
对称加密算法分析及用Java实现
这是本人总结的Java 非对称 加密 算法,有疑问可以找我1038546502@qq.com
非对称加密算法流程图,使用visio绘制。
DES算法为密码体制中的对称密码体制,是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。 这里以Java代码实现DES算法。
主要介绍RSA非对称加密算法的由来和应用场景,以及加密原理
用JAVA实现Rsa非对称加密算法 不算简单的算法 既可以加密又可以解密
本人总结了一些对称的加密算法,希望可以给一些朋友带来帮助!!
常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结
完整实验报告,共31页 包括实验目的,实验内容,实验步骤,运行结果,实验总结 附上了源码。 部分内容可见https://blog.csdn.net/guansheng123/article/details/123029969
对称加密算法Blowfish(java).rar 可运行 对称加密算法Blowfish(java).rar 可运行
除了实现了对称加密算法外,EVP_Encrypt*...*系列还对块加密算法提供了缓冲功能。以后我们可能会更多使用EVP_Cipher的术语,因为它是真正的实现结构。本文还介绍了EVP_Cipher(EVP_Encrypt)系列的两个基本结构,它们...
C语言实现的DES对称加密算法,老师布置的实验作业,原创,花了不少时间才调试成功。
js版md5非对称加密算法js版md5非对称加密算法js版md5非对称加密算法js版md5非对称加密算法js版md5非对称加密算法
对称加密:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES 非对称加密:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
Java_加密解密之对称加密算法DES
易语言自创对称加密算法
非对称加密JAVA实现,实现对超长内容进行加密