📄 encryptdata.java
字号:
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.spec.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author wu changhai
* @version 1.0
*/
public class encryptData {
public encryptData() {
}
public byte[] readByteFile(String fileName){
File f=new File(fileName);
FileInputStream fin=null;
byte[] bin=null;
if(f.exists()){
try {
fin = new FileInputStream(f);
}
catch (FileNotFoundException ex) {
}
try {
bin=new byte[(int)f.length()];
fin.read(bin);
fin.close();
}
catch (IOException ex1) {
}
}else{
javax.swing.JOptionPane.showMessageDialog(null,"没有找到"+fileName);
System.exit(1);
}
return bin;
}
public void writeByteToFile(String fileName,byte[] data){
File f=new File(fileName);
FileOutputStream fout=null;
if(f.exists()){
try {
fout = new FileOutputStream(f);
}
catch (FileNotFoundException ex) {
}
try {
fout.write(data);
fout.close();
}
catch (IOException ex1) {
}
}else{
javax.swing.JOptionPane.showMessageDialog(null,"没有找到"+fileName);
System.exit(1);
}
}
public void encryptFile(String fileName){
byte[] filedata=readByteFile(fileName);
if(filedata.length>0)
// saveKey();
writeByteToFile(fileName,encryptData(filedata));
}
public void decryptFile(String fileName){
byte[] filedata=readByteFile(fileName);
if(filedata.length>0){
// System.out.println(decrytData(filedata));
writeByteToFile(fileName,decrytData(filedata));
}
}
public byte[] decrytData(byte[] encryptedData){
byte[] bs=loadKey();
byte[] data=null;
DESKeySpec dks=null;
SecretKey key=null;
Cipher cipher=null;
SecureRandom desr=new SecureRandom();
try {
cipher = Cipher.getInstance("DES");
}
catch (NoSuchAlgorithmException ex3) {
}
catch (NoSuchPaddingException ex3) {
}
if(bs!=null){
try {
dks = new DESKeySpec(bs);
}
catch (InvalidKeyException ex) {
ex.printStackTrace();
}
try {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
try {
key = keyFactory.generateSecret(dks);
}
catch (InvalidKeySpecException ex2) {
ex2.printStackTrace();
}
}
catch (NoSuchAlgorithmException ex1) {
ex1.printStackTrace();
}
try {
cipher.init(Cipher.DECRYPT_MODE, key, desr);
}
catch (InvalidKeyException ex4) {
ex4.printStackTrace();
}
try {
data = cipher.doFinal(encryptedData);
}
catch (BadPaddingException ex5) {
ex5.printStackTrace();
}
catch (IllegalBlockSizeException ex5) {
ex5.printStackTrace();
}
catch (IllegalStateException ex5) {
ex5.printStackTrace();
}
}else{
System.out.println("No encryption data");
}
// System.out.println(data.toString());
return data;
// return data;
}
public byte[] encryptData(byte[] data){
SecureRandom ensr=new SecureRandom();
byte[] bs=loadKey();
byte[] encryptedData=null;
DESKeySpec dks=null;
SecretKey key=null;
Cipher cipher=null;
try {
cipher = Cipher.getInstance("DES");
}
catch (NoSuchAlgorithmException ex3) {
}
catch (NoSuchPaddingException ex3) {
}
if(bs!=null){
try {
dks = new DESKeySpec(bs);
}
catch (InvalidKeyException ex) {
ex.printStackTrace();
}
try {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
try {
key = keyFactory.generateSecret(dks);
}
catch (InvalidKeySpecException ex2) {
ex2.printStackTrace();
}
}
catch (NoSuchAlgorithmException ex1) {
ex1.printStackTrace();
}
try {
cipher.init(Cipher.ENCRYPT_MODE, key, ensr);
}
catch (InvalidKeyException ex4) {
ex4.printStackTrace();
}
try {
encryptedData = cipher.doFinal(data);
}
catch (BadPaddingException ex5) {
}
catch (IllegalBlockSizeException ex5) {
}
catch (IllegalStateException ex5) {
}
// Cipher cipher
}
return encryptedData;
}
public byte[] generateKey(){
byte[] b=null;
SecureRandom sr=new SecureRandom();
try {
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(sr);
SecretKey key=kg.generateKey();
b=key.getEncoded();
}
catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
}
return b;
}
public byte[] loadKey(){
// File f=new File(".//keysn.key");
return readByteFile(".//keysn.key");
/* FileInputStream fi=null;
byte[] bkey=null;
if(f.exists()){
try {
fi = new FileInputStream(f);
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
try {
bkey=new byte[(int)f.length()];
fi.read(bkey);
fi.close();
}
catch (IOException ex1) {
ex1.printStackTrace();
}
}
return bkey;
*/
}
public void saveKey(){
File f=new File(".\\keysn.key");
FileOutputStream fo=null;
byte[] bkey=generateKey();
if(!f.exists())
try {
f.createNewFile();
}
catch (IOException ex2) {
}
if(bkey!=null){
try {
fo = new FileOutputStream(f);
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
try {
fo.write(bkey);
fo.close();
}
catch (IOException ex1) {
ex1.printStackTrace();
}
}else{
javax.swing.JOptionPane.showMessageDialog(null,"密钥生成失败!!");
System.exit(1);
}
}
/* public static void main(String[] args){
encryptData ec=new encryptData();
ec.decryptFile(".\\xxx.txt");
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -