• JAVA_DES 加密 解密 生成随机密钥


    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("解密");
     }
    }
    

      

  • 相关阅读:
    mybatis(2)操作数据库
    《构建之法》阅读笔记02
    mybatis(4)使用注解方式配置sql语句
    mybatis(5)参数传递
    Android Studio安装
    《构建之法》阅读笔记01
    反射
    mybatis(3)利用Mapper接口实现数据的增删改查
    activity组件
    mybatis(1)
  • 原文地址:https://www.cnblogs.com/gisblogs/p/5082344.html
Copyright © 2020-2023  润新知