자바 DES 복호화 파일

3890 단어 자바
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");
}
}

좋은 웹페이지 즐겨찾기