Java DES加密解密算法Demo源代码下载
程序员文章站
2022-03-01 13:55:08
...
DES算法简介
DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法、DES算法的入口参数有三个:Key、Data、Mode、其中Key为8个字节共64位、是DES算法的工作密钥、Data也为8个字节64位、是要被加密或被解密的数据、Mode为DES的工作方式、有两种、加密或解密
Java密码学结构设计遵循两个原则
1、算法的独立性和可靠性
2、实现的独立性和相互作用性
算法的独立性是通过定义密码服务类来获得、用户只需了解密码算法的概念,而不用去关心如何实现这些概念、实现的独立性和相互作用性通过密码服务提供器来实现、密码服务提供器是实现一个或多个密码服务的一个或多个程序包、软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器、安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来设置定义一个提供器
DES算法源代码工具类
public class DesUtil { private final static String DES = "DES"; public static void main(String[] args) throws Exception { String data = "123456"; String key = "abc@1234"; System.err.println(encrypt(data, key)); System.err.println(decrypt(encrypt(data, key), key)); } /** * Description 根据键值进行加密 * @param data * @param key 加密键byte数组 * @return * @throws Exception */ public static String encrypt(String data, String key) throws Exception { byte[] bt = encrypt(data.getBytes(), key.getBytes()); String strs = new BASE64Encoder().encode(bt); return strs; } /** * Description 根据键值进行解密 * @param data * @param key 加密键byte数组 * @return * @throws IOException * @throws Exception */ public static String decrypt(String data, String key) throws IOException, Exception { if (data == null) return null; BASE64Decoder decoder = new BASE64Decoder(); byte[] buf = decoder.decodeBuffer(data); byte[] bt = decrypt(buf,key.getBytes()); return new String(bt); } /** * Description 根据键值进行加密 * @param data * @param key 加密键byte数组 * @return * @throws Exception */ private static byte[] encrypt(byte[] data, byte[] key) throws Exception { // 生成一个可信任的随机数源 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(data); } /** * Description 根据键值进行解密 * @param data * @param key 加密键byte数组 * @return * @throws Exception */ private static byte[] decrypt(byte[] data, byte[] key) throws Exception { // 生成一个可信任的随机数源 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(data); } }
以上代码需要引入一个jar包、sun.misc.BASE64Decoder.jar、源代码里面我会把sun.misc.BASE64Decoder.jar上传上去、大家可以在下载的源代码里面找
源代码链接: http://dwtedx.com/download.html?bdkey=s/1bnGqjvT 密码: qh7m
上一篇: 2019最新PHP模拟面试题及答案
下一篇: 2022年大前端面试题汇总(收藏)