当前位置:首页 » 文件管理 » java锁文件夹

java锁文件夹

发布时间: 2022-04-26 08:27:11

A. 如何给文件夹上锁

电脑里经常会存储着重要文件,这些文件需要进行加密,有许多方法来实现。但如果想对一个文件夹里的所有文件都进行加密,数量少还可以,要是数量多岂不是得把人累死? 因此,今天我要告诉您一个好方法:给Windows 9x/2000文件夹加密。通过给一个文件夹加密就可使该文件夹里的所有文件得到保护。其工作效果,就是在您双击进入该文件夹时系统提示您输入密码,正确则进入,错误则自动退回到硬盘根目录下——非常好用! 1、进入您要进行加密保护的文件夹中,在空白处单击鼠标右键,选择“自定义文件夹…”选项; 2、单击“下一步”选择“自定义”并在副选框中选择“选择或编辑该文件夹的Html模板”,单击“下一步”; 3、在选择模板类型中选择“标准”,并将“编辑该模板”选项选中,单击“下一步”; [下一页] 4、在弹出的“Folder”文件中找到〈script language="java-script"〉,在其下方顶头输入以下内容: var pass = prompt("请输入密码") 该处的“请输入密码”为系统提示语 if(pass != "123") “123”处换成您自己设定的密码 {window.location="c:"} 5、保存“Folder”文件之后,选择完成,文件夹加密就完成了,您可以进行测试啦! 因为刚才的诸多步骤就是Windows的脚本编程,所以经验证,该方法适用于所有Windows系统。如果需要去掉保护,只需要把“Folder”文件修改回原样就好啦! 由于Windows版本不同,细微之处会有所区别,如在Windows Me中,“Folder”文件中就没有〈script language="java-script"〉字段,而只有〈script〉,放到它后面也同样起作用。文件夹向导也不尽相同,请大家举一反三。 或者在网上可以 到很多的加密程序的

B. 怎么样给文件夹上锁啊

电脑里经常会存储着重要文件,这些文件需要进行加密,有许多方法来实现。但如果想对一个文件夹里的所有文件都进行加密,数量少还可以,要是数量多岂不是得把人累死?

因此,今天我要告诉您一个好方法:给Windows 9x/2000文件夹加密。通过给一个文件夹加密就可使该文件夹里的所有文件得到保护。其工作效果,就是在您双击进入该文件夹时系统提示您输入密码,正确则进入,错误则自动退回到硬盘根目录下——非常好用!

1、进入您要进行加密保护的文件夹中,在空白处单击鼠标右键,选择“自定义文件夹…”选项;

2、单击“下一步”选择“自定义”并在副选框中选择“选择或编辑该文件夹的Html模板”,单击“下一步”;

3、在选择模板类型中选择“标准”,并将“编辑该模板”选项选中,单击“下一步”;

[下一页]
4、在弹出的“Folder”文件中找到〈script language="java-script"〉,在其下方顶头输入以下内容:

var pass = prompt("请输入密码")

该处的“请输入密码”为系统提示语

if(pass != "123")

“123”处换成您自己设定的密码

{window.location="c:"}

5、保存“Folder”文件之后,选择完成,文件夹加密就完成了,您可以进行测试啦!

因为刚才的诸多步骤就是Windows的脚本编程,所以经验证,该方法适用于所有Windows系统。如果需要去掉保护,只需要把“Folder”文件修改回原样就好啦!

由于Windows版本不同,细微之处会有所区别,如在Windows Me中,“Folder”文件中就没有〈script language="java-script"〉字段,而只有〈script〉,放到它后面也同样起作用。文件夹向导也不尽相同,请大家举一反三。

或者在网上可以 到很多的加密程序的

C. java中如何锁住一个文件不让其他程序修改

File f = new File(fileName);
RandomAccessFile raf = new RandomAccessFile(f, "rw");
FileChannel fc = raf.getChannel();
FileLock fl = fc.tryLock();
if (fl.isValid()) {
Thread.sleep(30000); //do something here, 这时用notepad打开无法修改.
fl.release();
}
raf.close();

D. 怎样给文件夹上锁

方法一:不要去相信网上下载的文件夹加密软件,最好的还是winrar,或者使用魔法兔子也不错

方法二:不要用加密软件,任何加密软件都有破解的。教你一种办法,是外人无法破解的。
运行-输入cmd 回车
输入f: 回车 【可以输入其他盘符如D :E :F:】
输入md a..\回车
在你的f盘就有了一个a的文件夹,是打不开的,删也删不掉的,就是加密文件夹。要想打开它就要,运行-输入f:\a..\就打开了。可以在里面放任何文件,然后删掉任何一个文件夹,就行了。要想删除加密的文件,就运行CMD-输入rd \\?\\f:\a.\就行了,前提是文件夹要是空的。如果你不愿意用a..\可以用中文代替如:md 我的秘密文件任何人不得浏览..\ 粘贴进去就行了。要打开文件就要运行 输入f:\我的秘密文件任何人不得浏览..\就打开了 要删除就运行CMD 输入rd \\?\\f:\我的秘密文件任何人不得浏览.\就删除了
最保险的就是自己输入乱七八糟的中文,只有你自己知道的文字。

今天我要告诉您一个好方法:给Windows 9x/2000文件夹加密。通过给一个文件夹加密就可使该文件夹里的所有文件得到保护。其工作效果,就是在您双击进入该文件夹时系统提示您输入密码,正确则进入,错误则自动退回到硬盘根目录下——非常好用!

1、进入您要进行加密保护的文件夹中,在空白处单击鼠标右键,选择“自定义文件夹…”选项;

2、单击“下一步”选择“自定义”并在副选框中选择“选择或编辑该文件夹的Html模板”,单击“下一步”;

3、在选择模板类型中选择“标准”,并将“编辑该模板”选项选中,单击“下一步”;

[下一页]
4、在弹出的“Folder”文件中找到〈script language="java-script"〉,在其下方顶头输入以下内容:

var pass = prompt("请输入密码")

该处的“请输入密码”为系统提示语

if(pass != "123")

“123”处换成您自己设定的密码

{window.location="c:"}

5、保存“Folder”文件之后,选择完成,文件夹加密就完成了,您可以进行测试啦!

因为刚才的诸多步骤就是Windows的脚本编程,所以经验证,该方法适用于所有Windows系统。如果需要去掉保护,只需要把“Folder”文件修改回原样就好啦!

由于Windows版本不同,细微之处会有所区别,如在Windows Me中,“Folder”文件中就没有〈script language="java-script"〉字段,而只有〈script〉,放到它后面也同样起作用。文件夹向导也不尽相同,请大家举一反三。

E. 怎么给文件夹上锁

方法一:不要去相信网上下载的文件夹加密软件,最好的还是winrar,或者使用魔法兔子也不错
方法二:不要用加密软件,任何加密软件都有破解的。教你一种办法,是外人无法破解的。
运行-输入cmd
回车
输入f:
回车
【可以输入其他盘符如D
:E
:F:】
输入md
a..\\回车
在你的f盘就有了一个a的文件夹,是打不开的,删也删不掉的,就是加密文件夹。要想打开它就要,运行-输入f:\\a..\\就打开了。可以在里面放任何文件,然后删掉任何一个文件夹,就行了。要想删除加密的文件,就运行CMD-输入rd
\\\\?\\\\f:\\a.\\就行了,前提是文件夹要是空的。如果你不愿意用a..\\可以用中文代替如:md
我的秘密文件任何人不得浏览..\\
粘贴进去就行了。要打开文件就要运行
输入f:\\我的秘密文件任何人不得浏览..\\就打开了
要删除就运行CMD
输入rd
\\\\?\\\\f:\\我的秘密文件任何人不得浏览.\\就删除了
最保险的就是自己输入乱七八糟的中文,只有你自己知道的文字。
今天我要告诉您一个好方法:给Windows
9x/2000文件夹加密。通过给一个文件夹加密就可使该文件夹里的所有文件得到保护。其工作效果,就是在您双击进入该文件夹时系统提示您输入密码,正确则进入,错误则自动退回到硬盘根目录下——非常好用!
1、进入您要进行加密保护的文件夹中,在空白处单击鼠标右键,选择“自定义文件夹…”选项;
2、单击“下一步”选择“自定义”并在副选框中选择“选择或编辑该文件夹的Html模板”,单击“下一步”;
3、在选择模板类型中选择“标准”,并将“编辑该模板”选项选中,单击“下一步”;
[下一页]
4、在弹出的“Folder”文件中找到〈script
language="java-script"〉,在其下方顶头输入以下内容:
var
pass
=
prompt("请输入密码")
该处的“请输入密码”为系统提示语
if(pass
!=
"123")
“123”处换成您自己设定的密码
{window.location="c:"}
5、保存“Folder”文件之后,选择完成,文件夹加密就完成了,您可以进行测试啦!
因为刚才的诸多步骤就是Windows的脚本编程,所以经验证,该方法适用于所有Windows系统。如果需要去掉保护,只需要把“Folder”文件修改回原样就好啦!
由于Windows版本不同,细微之处会有所区别,如在Windows
Me中,“Folder”文件中就没有〈script
language="java-script"〉字段,而只有〈script〉,放到它后面也同样起作用。文件夹向导也不尽相同,请大家举一反三。

F. 求手机文件夹加密或者能隐藏文件夹的JAVA软件

目前没有哦!我SIS格式的都找不到更别提JAVA的了!不过可以用程序锁之内的软件把多媒体或短信等功能整个锁起来!

G. 电脑文件夹怎么上锁

电脑文件夹惊喜加密方法:

一、利用文件属性对文件进行隐身

找到需要加密的文件夹,右击选择“属性”打开,勾选“隐藏”;并选择“将更改应用于此文件夹、子文件夹和文件”,然后确定,此时文件夹就已隐身了。

3当需要查看文件时,输入密码查看即可。

H. 如何用java实现文件操作的锁定及解锁

synchronized关键字可以实现加锁和解锁

I. xp 操作系统下 怎么用java 语言加密文件夹

一个例子
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;

/**
文件名:FileEncrypter.java
JDK:1.40以上
说明:文件加密
加密方法:三重DES加密
加密过程:对选中的文件加密后在同文件夹下生成一个增加了".tdes"
扩展名的加密文件

解密过程:对选中的加密文件(必须有".tdes"扩展名)进行解密
*/
public class FileEncrypter extends JFrame{
public static final int WIDTH = 550;
public static final int HEIGHT = 200;

public static void main(String args[]) {
FileEncrypter fe = new FileEncrypter();
fe.show();
}

FileEncrypter(){
this.setSize(WIDTH,HEIGHT);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screenSize = tk.getScreenSize();
this.setLocation((screenSize.width - WIDTH)/2,
(screenSize.height - HEIGHT)/2);
this.setTitle("文件加密器(TriDES)");
Container c = this.getContentPane();
c.setLayout( new FlowLayout());

final FilePanel fp = new FilePanel("文件选择");
c.add(fp);

final KeyPanel pp = new KeyPanel("密码");
c.add(pp);

JButton jbE = new JButton("加密");
c.add(jbE);
jbE.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
File file = new File(fp.getFileName());
if (file.exists())
encrypt(file.getAbsoluteFile(),pp.getKey());
else
JOptionPane.showMessageDialog(
null,"请选择文件!","提示",JOptionPane.OK_OPTION);
}
});
JButton jbD = new JButton("解密");
c.add(jbD);
jbD.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
File file = new File(fp.getFileName());
if (file.exists())
decrypt(file.getAbsoluteFile(),pp.getKey());
else
JOptionPane.showMessageDialog(
null,"请选择文件!","提示",JOptionPane.OK_OPTION);
}
});
}

/**
加密函数
输入:
要加密的文件,密码(由0-F组成,共48个字符,表示3个8位的密码)如:

其中:
AD67EA2F3BE6E5AD DES密码一
D368DFE03120B5DF DES密码二
92A8FD8FEC2F0746 DES密码三
输出:
对输入的文件加密后,保存到同一文件夹下增加了".tdes"扩展名的文件中。
*/
private void encrypt(File fileIn,String sKey){
try{
if(sKey.length() == 48){
byte[] bytK1 = getKeyByStr(sKey.substring(0,16));
byte[] bytK2 = getKeyByStr(sKey.substring(16,32));
byte[] bytK3 = getKeyByStr(sKey.substring(32,48));

FileInputStream fis = new FileInputStream(fileIn);
byte[] bytIn = new byte[(int)fileIn.length()];
for(int i = 0;i<fileIn.length();i++){
bytIn[i] = (byte)fis.read();
}
//加密
byte[] bytOut = encryptByDES(encryptByDES(
encryptByDES(bytIn,bytK1),bytK2),bytK3);
String fileOut = fileIn.getPath() + ".tdes";
FileOutputStream fos = new FileOutputStream(fileOut);
for(int i = 0;i<bytOut.length;i++){
fos.write((int)bytOut[i]);
}
fos.close();
JOptionPane.showMessageDialog(
this,"加密成功!","提示",JOptionPane.OK_OPTION);
}else
JOptionPane.showMessageDialog(
this,"密码长度必须等于48!","错误信息",JOptionPane.ERROR_MESSAGE);
}catch(Exception e){
e.printStackTrace();
}
}

/**
解密函数
输入:
要解密的文件,密码(由0-F组成,共48个字符,表示3个8位的密码)如:

其中:
AD67EA2F3BE6E5AD DES密码一
D368DFE03120B5DF DES密码二
92A8FD8FEC2F0746 DES密码三
输出:
对输入的文件解密后,保存到用户指定的文件中。
*/
private void decrypt(File fileIn,String sKey){
try{
if(sKey.length() == 48){
String strPath = fileIn.getPath();
if(strPath.substring(strPath.length()-5).toLowerCase().equals(".tdes"))
strPath = strPath.substring(0,strPath.length()-5);
else{
JOptionPane.showMessageDialog(
this,"不是合法的加密文件!","提示",JOptionPane.OK_OPTION);
return;
}
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setSelectedFile(new File(strPath));
//用户指定要保存的文件
int ret = chooser.showSaveDialog(this);
if(ret==JFileChooser.APPROVE_OPTION){

byte[] bytK1 = getKeyByStr(sKey.substring(0,16));
byte[] bytK2 = getKeyByStr(sKey.substring(16,32));
byte[] bytK3 = getKeyByStr(sKey.substring(32,48));

FileInputStream fis = new FileInputStream(fileIn);
byte[] bytIn = new byte[(int)fileIn.length()];
for(int i = 0;i<fileIn.length();i++){
bytIn[i] = (byte)fis.read();
}
//解密
byte[] bytOut = decryptByDES(decryptByDES(
decryptByDES(bytIn,bytK3),bytK2),bytK1);
File fileOut = chooser.getSelectedFile();
fileOut.createNewFile();
FileOutputStream fos = new FileOutputStream(fileOut);
for(int i = 0;i<bytOut.length;i++){
fos.write((int)bytOut[i]);
}
fos.close();
JOptionPane.showMessageDialog(
this,"解密成功!","提示",JOptionPane.OK_OPTION);
}
}else
JOptionPane.showMessageDialog(
this,"密码长度必须等于48!","错误信息",JOptionPane.ERROR_MESSAGE);
}catch(Exception e){
JOptionPane.showMessageDialog(
this,"解密失败,请核对密码!","提示",JOptionPane.OK_OPTION);
}
}

/**
用DES方法加密输入的字节
bytKey需为8字节长,是加密的密码
*/
private byte[] encryptByDES(byte[] bytP,byte[] bytKey) throws Exception{
DESKeySpec desKS = new DESKeySpec(bytKey);
SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
SecretKey sk = skf.generateSecret(desKS);
Cipher cip = Cipher.getInstance("DES");
cip.init(Cipher.ENCRYPT_MODE,sk);
return cip.doFinal(bytP);
}

/**
用DES方法解密输入的字节
bytKey需为8字节长,是解密的密码
*/
private byte[] decryptByDES(byte[] bytE,byte[] bytKey) throws Exception{
DESKeySpec desKS = new DESKeySpec(bytKey);
SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
SecretKey sk = skf.generateSecret(desKS);
Cipher cip = Cipher.getInstance("DES");
cip.init(Cipher.DECRYPT_MODE,sk);
return cip.doFinal(bytE);
}

/**
输入密码的字符形式,返回字节数组形式。
如输入字符串:AD67EA2F3BE6E5AD
返回字节数组:{ 173,103,234,47,59,230,229,173 }
*/
private byte[] getKeyByStr(String str){
byte[] bRet = new byte[str.length()/2];
for(int i=0;i<str.length()/2;i++){
Integer itg =
new Integer(16*getChrInt(str.charAt(2*i)) + getChrInt(str.charAt(2*i+1)));
bRet[i] = itg.byteValue();
}
return bRet;
}
/**
计算一个16进制字符的10进制值
输入:0-F
*/
private int getChrInt(char chr){
int iRet=0;
if(chr=="0".charAt(0)) iRet = 0;
if(chr=="1".charAt(0)) iRet = 1;
if(chr=="2".charAt(0)) iRet = 2;
if(chr=="3".charAt(0)) iRet = 3;
if(chr=="4".charAt(0)) iRet = 4;
if(chr=="5".charAt(0)) iRet = 5;
if(chr=="6".charAt(0)) iRet = 6;
if(chr=="7".charAt(0)) iRet = 7;
if(chr=="8".charAt(0)) iRet = 8;
if(chr=="9".charAt(0)) iRet = 9;
if(chr=="A".charAt(0)) iRet = 10;
if(chr=="B".charAt(0)) iRet = 11;
if(chr=="C".charAt(0)) iRet = 12;
if(chr=="D".charAt(0)) iRet = 13;
if(chr=="E".charAt(0)) iRet = 14;
if(chr=="F".charAt(0)) iRet = 15;
return iRet;
}
}

/**
文件选择组件。
*/
class FilePanel extends JPanel{
FilePanel(String str){
JLabel label = new JLabel(str);
JTextField fileText = new JTextField(35);
JButton chooseButton = new JButton("浏览...");
this.add(label);
this.add(fileText);
this.add(chooseButton);
clickAction ca = new clickAction(this);
chooseButton.addActionListener(ca);

}

public String getFileName(){
JTextField jtf = (JTextField)this.getComponent(1);
return jtf.getText();
}

private class clickAction implements ActionListener{
clickAction(Component c){
cmpt = c;
}

public void actionPerformed(ActionEvent event){
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
int ret = chooser.showOpenDialog(cmpt);
if(ret==JFileChooser.APPROVE_OPTION){
JPanel jp = (JPanel)cmpt;
JTextField jtf = (JTextField)jp.getComponent(1);
jtf.setText(chooser.getSelectedFile().getPath());
}
}

private Component cmpt;
}
}

/**
密码生成组件。
*/
class KeyPanel extends JPanel{
KeyPanel(String str){
JLabel label = new JLabel(str);
JTextField fileText = new JTextField(35);
JButton chooseButton = new JButton("随机产生");
this.add(label);
this.add(fileText);
this.add(chooseButton);
clickAction ca = new clickAction(this);
chooseButton.addActionListener(ca);

}

//返回生成的密码(48个字符长度)
public String getKey(){
JTextField jtf = (JTextField)this.getComponent(1);
return jtf.getText();
}

private class clickAction implements ActionListener{
clickAction(Component c){
cmpt = c;
}

public void actionPerformed(ActionEvent event){
try{
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56);
Key ke = kg.generateKey();
byte[] bytK1 = ke.getEncoded();
ke = kg.generateKey();
byte[] bytK2 = ke.getEncoded();
ke = kg.generateKey();
byte[] bytK3 = ke.getEncoded();

JPanel jp = (JPanel)cmpt;
JTextField jtf = (JTextField)jp.getComponent(1);
jtf.setText(getByteStr(bytK1)+getByteStr(bytK2)+getByteStr(bytK3));
}catch(Exception e){
e.printStackTrace();
}
}

private String getByteStr(byte[] byt){
String strRet = "";
for(int i=0;i<byt.length;i++){
//System.out.println(byt[i]);
strRet += getHexValue((byt[i]&240)/16);
strRet += getHexValue(byt[i]&15);
}
return strRet;
}

private String getHexValue(int s){
String sRet=null;
switch (s){
case 0: sRet = "0";break;
case 1: sRet = "1";break;
case 2: sRet = "2";break;
case 3: sRet = "3";break;
case 4: sRet = "4";break;
case 5: sRet = "5";break;
case 6: sRet = "6";break;
case 7: sRet = "7";break;
case 8: sRet = "8";break;
case 9: sRet = "9";break;
case 10: sRet = "A";break;
case 11: sRet = "B";break;
case 12: sRet = "C";break;
case 13: sRet = "D";break;
case 14: sRet = "E";break;
case 15: sRet = "F";
}
return sRet;
}

private Component cmpt;
}
}

J. 用java写个文件加密的代码该怎么写

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;

/**
文件名:FileEncrypter.java
JDK:1.40以上
说明:文件加密
加密方法:三重DES加密
加密过程:对选中的文件加密后在同文件夹下生成一个增加了".tdes"
扩展名的加密文件
解密过程:对选中的加密文件(必须有".tdes"扩展名)进行解密
*/
public class FileEncrypter extends JFrame{
public static final int WIDTH = 550;
public static final int HEIGHT = 200;

public static void main(String args[]) {
FileEncrypter fe = new FileEncrypter();
fe.show();
}

FileEncrypter(){
this.setSize(WIDTH,HEIGHT);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screenSize = tk.getScreenSize();
this.setLocation((screenSize.width - WIDTH)/2,
(screenSize.height - HEIGHT)/2);
this.setTitle("文件加密器(TriDES)");
Container c = this.getContentPane();
c.setLayout( new FlowLayout());

final FilePanel fp = new FilePanel("文件选择");
c.add(fp);

final KeyPanel pp = new KeyPanel("密码");
c.add(pp);

JButton jbE = new JButton("加密");
c.add(jbE);
jbE.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
File file = new File(fp.getFileName());
if (file.exists())
encrypt(file.getAbsoluteFile(),pp.getKey());
else
JOptionPane.showMessageDialog(
null,"请选择文件!","提示",JOptionPane.OK_OPTION);
}
});
JButton jbD = new JButton("解密");
c.add(jbD);
jbD.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
File file = new File(fp.getFileName());
if (file.exists())
decrypt(file.getAbsoluteFile(),pp.getKey());
else
JOptionPane.showMessageDialog(
null,"请选择文件!","提示",JOptionPane.OK_OPTION);
}
});
}

/**
加密函数
输入:
要加密的文件,密码(由0-F组成,共48个字符,表示3个8位的密码)如:

其中:
AD67EA2F3BE6E5AD DES密码一
D368DFE03120B5DF DES密码二
92A8FD8FEC2F0746 DES密码三
输出:
对输入的文件加密后,保存到同一文件夹下增加了".tdes"扩展名的文件中。
*/
private void encrypt(File fileIn,String sKey){
try{
if(sKey.length() == 48){
byte[] bytK1 = getKeyByStr(sKey.substring(0,16));
byte[] bytK2 = getKeyByStr(sKey.substring(16,32));
byte[] bytK3 = getKeyByStr(sKey.substring(32,48));

FileInputStream fis = new FileInputStream(fileIn);
byte[] bytIn = new byte[(int)fileIn.length()];
for(int i = 0;i<FILEIN.LENGTH();I++){
bytIn[i] = (byte)fis.read();
}
//加密
byte[] bytOut = encryptByDES(encryptByDES(
encryptByDES(bytIn,bytK1),bytK2),bytK3);
String fileOut = fileIn.getPath() + ".tdes";
FileOutputStream fos = new FileOutputStream(fileOut);
for(int i = 0;i<BYTOUT.LENGTH;I++){
fos.write((int)bytOut[i]);
}
fos.close();
JOptionPane.showMessageDialog(
this,"加密成功!","提示",JOptionPane.OK_OPTION);
}else
JOptionPane.showMessageDialog(
this,"密码长度必须等于48!","错误信息",JOptionPane.ERROR_MESSAGE);
}catch(Exception e){
e.printStackTrace();
}
}

/**
解密函数
输入:
要解密的文件,密码(由0-F组成,共48个字符,表示3个8位的密码)如:

其中:
AD67EA2F3BE6E5AD DES密码一
D368DFE03120B5DF DES密码二
92A8FD8FEC2F0746 DES密码三
输出:
对输入的文件解密后,保存到用户指定的文件中。
*/
private void decrypt(File fileIn,String sKey){
try{
if(sKey.length() == 48){
String strPath = fileIn.getPath();
if(strPath.substring(strPath.length()-5).toLowerCase().equals(".tdes"))
strPath = strPath.substring(0,strPath.length()-5);
else{
JOptionPane.showMessageDialog(
this,"不是合法的加密文件!","提示",JOptionPane.OK_OPTION);
return;
}
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setSelectedFile(new File(strPath));
//用户指定要保存的文件
int ret = chooser.showSaveDialog(this);
if(ret==JFileChooser.APPROVE_OPTION){

byte[] bytK1 = getKeyByStr(sKey.substring(0,16));
byte[] bytK2 = getKeyByStr(sKey.substring(16,32));
byte[] bytK3 = getKeyByStr(sKey.substring(32,48));

FileInputStream fis = new FileInputStream(fileIn);
byte[] bytIn = new byte[(int)fileIn.length()];
for(int i = 0;i<FILEIN.LENGTH();I++){
bytIn[i] = (byte)fis.read();
}
//解密
byte[] bytOut = decryptByDES(decryptByDES(
decryptByDES(bytIn,bytK3),bytK2),bytK1);
File fileOut = chooser.getSelectedFile();
fileOut.createNewFile();
FileOutputStream fos = new FileOutputStream(fileOut);
for(int i = 0;i<BYTOUT.LENGTH;I++){
fos.write((int)bytOut[i]);
}
fos.close();
JOptionPane.showMessageDialog(
this,"解密成功!","提示",JOptionPane.OK_OPTION);
}
}else
JOptionPane.showMessageDialog(
this,"密码长度必须等于48!","错误信息",JOptionPane.ERROR_MESSAGE);
}catch(Exception e){
JOptionPane.showMessageDialog(
this,"解密失败,请核对密码!","提示",JOptionPane.OK_OPTION);
}
}

/**
用DES方法加密输入的字节
bytKey需为8字节长,是加密的密码
*/
private byte[] encryptByDES(byte[] bytP,byte[] bytKey) throws Exception{
DESKeySpec desKS = new DESKeySpec(bytKey);
SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
SecretKey sk = skf.generateSecret(desKS);
Cipher cip = Cipher.getInstance("DES");
cip.init(Cipher.ENCRYPT_MODE,sk);
return cip.doFinal(bytP);
}

/**
用DES方法解密输入的字节
bytKey需为8字节长,是解密的密码
*/
private byte[] decryptByDES(byte[] bytE,byte[] bytKey) throws Exception{
DESKeySpec desKS = new DESKeySpec(bytKey);
SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
SecretKey sk = skf.generateSecret(desKS);
Cipher cip = Cipher.getInstance("DES");
cip.init(Cipher.DECRYPT_MODE,sk);
return cip.doFinal(bytE);
}

/**
输入密码的字符形式,返回字节数组形式。
如输入字符串:AD67EA2F3BE6E5AD
返回字节数组:{173,103,234,47,59,230,229,173}
*/
private byte[] getKeyByStr(String str){
byte[] bRet = new byte[str.length()/2];
for(int i=0;i<STR.LENGTH()
Integer itg =
new Integer(16*getChrInt(str.charAt(2*i)) + getChrInt(str.charAt(2*i+1)));
bRet[i] = itg.byteValue();
}
return bRet;
}
/**
计算一个16进制字符的10进制值
输入:0-F
*/
private int getChrInt(char chr){
int iRet=0;
if(chr=="0".charAt(0)) iRet = 0;
if(chr=="1".charAt(0)) iRet = 1;
if(chr=="2".charAt(0)) iRet = 2;
if(chr=="3".charAt(0)) iRet = 3;
if(chr=="4".charAt(0)) iRet = 4;
if(chr=="5".charAt(0)) iRet = 5;
if(chr=="6".charAt(0)) iRet = 6;
if(chr=="7".charAt(0)) iRet = 7;
if(chr=="8".charAt(0)) iRet = 8;
if(chr=="9".charAt(0)) iRet = 9;
if(chr=="A".charAt(0)) iRet = 10;
if(chr=="B".charAt(0)) iRet = 11;
if(chr=="C".charAt(0)) iRet = 12;
if(chr=="D".charAt(0)) iRet = 13;
if(chr=="E".charAt(0)) iRet = 14;
if(chr=="F".charAt(0)) iRet = 15;
return iRet;
}
}

/**
文件选择组件。
*/
class FilePanel extends JPanel{
FilePanel(String str){
JLabel label = new JLabel(str);
JTextField fileText = new JTextField(35);
JButton chooseButton = new JButton("浏览...");
this.add(label);
this.add(fileText);
this.add(chooseButton);
clickAction ca = new clickAction(this);
chooseButton.addActionListener(ca);

}

public String getFileName(){
JTextField jtf = (JTextField)this.getComponent(1);
return jtf.getText();
}

private class clickAction implements ActionListener{
clickAction(Component c){
cmpt = c;
}

public void actionPerformed(ActionEvent event){
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
int ret = chooser.showOpenDialog(cmpt);
if(ret==JFileChooser.APPROVE_OPTION){
JPanel jp = (JPanel)cmpt;
JTextField jtf = (JTextField)jp.getComponent(1);
jtf.setText(chooser.getSelectedFile().getPath());
}
}

private Component cmpt;
}
}

/**
密码生成组件。
*/
class KeyPanel extends JPanel{
KeyPanel(String str){
JLabel label = new JLabel(str);
JTextField fileText = new JTextField(35);
JButton chooseButton = new JButton("随机产生");
this.add(label);
this.add(fileText);
this.add(chooseButton);
clickAction ca = new clickAction(this);
chooseButton.addActionListener(ca);

}

//返回生成的密码(48个字符长度)
public String getKey(){
JTextField jtf = (JTextField)this.getComponent(1);
return jtf.getText();
}

private class clickAction implements ActionListener{
clickAction(Component c){
cmpt = c;
}

public void actionPerformed(ActionEvent event){
try{
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56);
Key ke = kg.generateKey();
byte[] bytK1 = ke.getEncoded();
ke = kg.generateKey();
byte[] bytK2 = ke.getEncoded();
ke = kg.generateKey();
byte[] bytK3 = ke.getEncoded();

JPanel jp = (JPanel)cmpt;
JTextField jtf = (JTextField)jp.getComponent(1);
jtf.setText(getByteStr(bytK1)+getByteStr(bytK2)+getByteStr(bytK3));
}catch(Exception e){
e.printStackTrace();
}
}

private String getByteStr(byte[] byt){
String strRet = "";
for(int i=0;i<BYT.LENGTH;I++){
//System.out.println(byt[i]);
strRet += getHexValue((byt[i]&240)/16);
strRet += getHexValue(byt[i]&15);
}
return strRet;
}

private String getHexValue(int s){
String sRet=null;
switch (s){
case 0: sRet = "0";break;
case 1: sRet = "1";break;
case 2: sRet = "2";break;
case 3: sRet = "3";break;
case 4: sRet = "4";break;
case 5: sRet = "5";break;
case 6: sRet = "6";break;
case 7: sRet = "7";break;
case 8: sRet = "8";break;
case 9: sRet = "9";break;
case 10: sRet = "A";break;
case 11: sRet = "B";break;
case 12: sRet = "C";break;
case 13: sRet = "D";break;
case 14: sRet = "E";break;
case 15: sRet = "F";
}
return sRet;
}

private Component cmpt;
}
}

热点内容
银行回单存储 发布:2024-11-13 03:33:42 浏览:10
博途上传编译之后不一致 发布:2024-11-13 03:33:42 浏览:28
什么是黑机安卓 发布:2024-11-13 03:30:25 浏览:107
java数组object数组 发布:2024-11-13 03:30:25 浏览:401
台湾云服务器价格 发布:2024-11-13 03:29:42 浏览:287
十年编程诗 发布:2024-11-13 03:28:16 浏览:862
修饰访问符 发布:2024-11-13 03:02:24 浏览:55
php项目开发全程实录源码 发布:2024-11-13 02:43:30 浏览:272
战地一如何挑选服务器 发布:2024-11-13 02:37:50 浏览:885
存储过程动态sql 发布:2024-11-13 02:25:50 浏览:614