zoukankan      html  css  js  c++  java
  • Java DES 加解密文件

    import com.mchange.v2.io.DirectoryDescentUtils;

    import javax.crypto.Cipher;
    import javax.crypto.CipherInputStream;
    import javax.crypto.CipherOutputStream;
    import javax.crypto.KeyGenerator;
    import java.io.*;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.security.Key;
    import java.security.SecureRandom;

    /**
    * Created by John on 2015/3/24.
    */
    public class DESUtil {

    public static String keyPath;
    public static void saveDesKey() {
    try {
    SecureRandom sr = new SecureRandom();
    KeyGenerator kg = KeyGenerator.getInstance("DES");
    kg.init(sr);
    FileOutputStream fos = new FileOutputStream(keyPath);
    ObjectOutputStream oos = new ObjectOutputStream(fos);

    //generate key
    Key key = kg.generateKey();
    oos.writeObject(key);
    oos.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }

    public static Key getKey() {
    Key kp = null;

    try {
    // String fileName = "D:/deskey.xml";
    /** InputStream is = DESTest.class.getClassLoader()
    .getResourceAsStream(fileName);
    **/
    Path path = Paths.get(keyPath);
    InputStream is = Files.newInputStream(path);
    ObjectInputStream oos = new ObjectInputStream(is);

    kp = (Key) oos.readObject();
    oos.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    return kp;
    }


    /**
    * 文件file进行加密并保存目标文件destFile中 * @param file
    * 要加密的文件 如c:/test/srcFile.txt * @param destFile
    * 加密后存放的文件名 如c:/加密后文件.txt
    */
    public static void encrypt(String file, String destFile) throws Exception {
    Cipher cipher = Cipher.getInstance("DES");
    cipher.init(Cipher.ENCRYPT_MODE, getKey());
    InputStream is = new FileInputStream(file);
    OutputStream out = new FileOutputStream(destFile);
    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();
    }

    /**
    * 文件file进行加密并保存目标文件destFile中 * @param file
    * 已加密的文件 如c:/加密后文件.txt
    *
    * @param dest 解密后存放的文件名 如c:/ test/解密后文件.txt
    */
    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 static void main(String[] args) throws Exception {

    //密钥保存在c:\gpi.key文件中
    keyPath = "c:\gpi.key";
    saveDesKey();

    //加密c:src.xml文件
    encrypt("C:\src.xml", "c:\encrypted.xml");

    //解密c:encrypted.xml文件
    decrypt("c:\encrypted.xml", "c:\decrypted.xml");
    }
    }
  • 相关阅读:
    struts debug 标签
    No result defined for action com.lk.IndexAction and result success
    记一次jdk升级引起的 Unsupported major.minor version 51.0
    jar hell & elasticsearch ik 版本问题
    Glide图片加载框架小bug
    环信easeui集成:坑总结2018(二)
    Android项目实战(五十一):浅谈GreenDao
    Android项目实战(五十):微信支付 坑总结
    Android项目实战(四十九):Andoird 7.0+相机适配
    环信easeui集成:坑总结2018
  • 原文地址:https://www.cnblogs.com/hanxianlong/p/4362383.html
Copyright © 2011-2022 走看看