JAVA_DES 加密 解密 生成随机密钥
2023-09-11 14:19:51 时间
package com.test; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; import javax.crypto.CipherOutputStream; import javax.crypto.KeyGenerator; class Encrypt { public static void saveDesKey() { try { SecureRandom sr = new SecureRandom(); // 为我们选择的DES算法生成一个KeyGenerator对象 KeyGenerator kg = KeyGenerator.getInstance("DES"); kg.init(sr); // 相对路径 需要新建 conf 文件夹 // String fileName = "conf/DesKey.xml"; // 绝对路径 String fileName = "d:/DesKey.xml"; FileOutputStream fos = new FileOutputStream(fileName); ObjectOutputStream oos = new ObjectOutputStream(fos); // 生成密钥 Key key = kg.generateKey(); oos.writeObject(key); oos.close(); } catch (Exception e) { e.printStackTrace(); } } public static Key getKey() { Key kp = null; try { // 相对路径 需要新建 conf 文件夹 // String fileName = "conf/DesKey.xml"; // InputStream is = Encrypt.class.getClassLoader().getResourceAsStream(fileName); // 绝对路径 String fileName = "d:/DesKey.xml"; FileInputStream is = new FileInputStream(fileName); ObjectInputStream oos = new ObjectInputStream(is); kp = (Key) oos.readObject(); oos.close(); } catch (Exception e) { e.printStackTrace(); } return kp; } public static void encrypt(String file, String dest) throws Exception { Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, getKey()); InputStream is = new FileInputStream(file); OutputStream out = new FileOutputStream(dest); CipherInputStream cis = new CipherInputStream(is, cipher); byte[] buffer = new byte[1024]; int r; while ((r = cis.read(buffer)) > 0) { out.write(buffer, 0, r); } cis.close(); is.close(); out.close(); } public static void decrypt(String file, String dest) throws Exception { Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, getKey()); InputStream is = new FileInputStream(file); OutputStream out = new FileOutputStream(dest); CipherOutputStream cos = new CipherOutputStream(out, cipher); byte[] buffer = new byte[1024]; int r; while ((r = is.read(buffer)) >= 0) { cos.write(buffer, 0, r); } cos.close(); out.close(); is.close(); } } public class DES { public static void main(String[] args) throws Exception { Encrypt.saveDesKey(); System.out.println("生成key"); Encrypt.getKey(); System.out.println("获取key"); Encrypt.encrypt("d:\\hello.txt", "d:\\encrypt.txt"); System.out.println("加密"); Encrypt.decrypt("d:\\encrypt.txt", "d:\\decrypt.txt"); System.out.println("解密"); } }
相关文章
- java加密解密研究6、MD算法家族
- Java反编译生成java文件
- Java Jar 包加密
- 【java细节】Java代码忽略https证书:No subject alternative names present
- java spring中对properties属性文件加密及其解密
- JAVA基础--Java枚举+位操作,巧妙判断是否设置
- Ubuntu安装java的几种方式以及多个JAVA版本的切换
- 最新秋招,Java八股文!含答案,JAVA核心知识点最详细版(面试必备)
- JAVA中AES对称加密和解密
- Java中常用的加密方法(JDK)
- java整理软件--- Java OCR 图像智能字符识别技术,可识别中文,但是验证码不可以识别...已测识别中文效果很好
- (JAVA)错误:Type mismatch: cannot convert from double to float ,这是什么意思?如何解决?
- 前端和Java后端的AES加密和解密
- 前后端AES加密解密,CryptoJS和Java实现
- Java学习---JAVA的类设计
- Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)
- Java实现各种加密验证算法(MD5、SHA256、base64、pdkdf2、pdkdf2_sha256)
- 华为OD机试 -字符串加密(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 【JAVA】Exception in thread "main" java.lang.NoClassDefFoundError
- 使用JUnit来测试Java代码中的异常
- Java RMI之HelloWorld程序以及相关的安全管理器的知识
- java DES加密解密
- node-rsa加密,java解密调试
- java RSA加密解密--转载
- RSA加密解密及数字签名Java实现--转
- php与java通用AES加密解密算法