首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA对称加密算法集锦及实现

2012-12-21 
JAVA对称加密算法汇总及实现一、DES算法设置算法及参数import java.security.Keyimport java.security.Sec

JAVA对称加密算法汇总及实现
一、DES算法
   设置算法及参数

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);}}

热点排行