Java实现常用的三种加密算法分别是:DES加密算法、AES加密算法、RSA加密算法。
DES加密算法是一种基于对称密钥的加密算法,它的特点是加密速度快、安全性高,是1970年代IBM公司研制的,后来被美国政府正式采用,1980年代后被广泛使用。DES加密算法的具体实现如下:
import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.security.SecureRandom; public class DesUtil { // 加密 public static byte[] encrypt(byte[] src, byte[] key) throws Exception { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密匙数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key); // 创建一个密匙工厂,用它把DESKeySpec转换成 // 一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance("DES"); // 用密匙初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, sr); // 获取数据并加密 // 正式执行加密操作 return cipher.doFinal(src); } // 解密 public static byte[] decrypt(byte[] src, byte[] key) throws Exception { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密匙数据创建一个DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key); // 创建一个密匙工厂,用它把DESKeySpec对象转换成 // 一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance("DES"); // 用密匙初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, sr); // 获取数据并解密 // 正式执行解密操作 return cipher.doFinal(src); } }
AES加密算法是一种基于对称密钥的加密算法,它的特点是加密速度快、安全性高,是2001年美国国家标准技术研究所(NIST)推荐的替代DES算法的标准。AES加密算法的具体实现如下:
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class AesUtil { // 加密 public static byte[] encrypt(byte[] src, byte[] key, byte[] iv) throws Exception { // 创建一个密钥 SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); // 创建一个偏移量 IvParameterSpec ivps = new IvParameterSpec(iv); // Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // 用密钥初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivps); // 获取数据并加密 // 正式执行加密操作 return cipher.doFinal(src); } // 解密 public static byte[] decrypt(byte[] src, byte[] key, byte[] iv) throws Exception { // 创建一个密钥 SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); // 创建一个偏移量 IvParameterSpec ivps = new IvParameterSpec(iv); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // 用密钥初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivps); // 获取数据并解密 // 正式执行解密操作 return cipher.doFinal(src); } }
RSA加密算法是一种基于非对称密钥的加密算法,它的特点是加密速度慢、安全性高,是1977年美国麻省理工学院的Ron Rivest、Adi Shamir和Len Adleman三位教授提出的。RSA加密算法的具体实现如下:
import java.security.Key; import java.security.KeyFactory;本文链接:http://task.lmcjl.com/news/9169.html
展开阅读全文