當前位置:首頁 » 文件管理 » java手機文件夾加密軟體

java手機文件夾加密軟體

發布時間: 2023-09-24 01:09:33

『壹』 使用java做一個加密和隱藏文件的軟體,具體需要怎麼做求指導

不知道你打算怎麼加密呢?隱藏又是什麼意思?是將多個文件合成一個嗎?
因為從操作系統層面來說理應能看到所有合法的文件,因此想要讓操作系統都看不到基本上是不可能的(何況Java也是用的操作系統API來實現對文件的操作)。
就加密我說說我的想法吧,首先需要一個加密的演算法。這個演算法需要滿足:演算法可逆,雙向計算復雜度(時間/空間)低,安全程度高,可靠性高。另外可以考慮並行化來增加性能,因為現在的文件系統大多比較大,管理的東西都不小。
如果能找到這樣一個演算法,可以對於文件使用二進制的讀寫(Binary I/O),然後每讀到一定大小的數據就進行加密運算,並寫入目標加密文件中。如果是解密則是讀取數據進行解密運算。
題外話:我覺得實際上做這樣一個軟體也沒有必要,每次存取文件都需要進行大量的計算操作,也很容易破壞cache的局部性原理。如果真的需要對一部分文件進行加密,也有很多現成的工具可用,甚至於是說現在的壓縮文件都可以帶上密碼加密。所以我認為這個軟體的前景不大,當然如果只是用來玩一玩也是可以的,只不過演算法比較難找而已。(如果用RSA這種級別的演算法估計也行的吧……)

『貳』 怎樣用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;
}
}

『叄』 有沒有不錯的加密軟體就是可以讓文件發不出去

合力天下數據防泄密系統(HL-dataAS)用於保護企業的知識產權、客戶資料、財務數據、技術圖紙、應用系統等機密信息化數據不外泄。簡單地說,」合力天下」防泄密系統讓企業機密數據和應用系統的重要資料「拷不走」、「屏幕截取不走」、「另存不走」、「列印不走」、「內容復制不走」、「MSN、QQ、郵件發送不走」。

一、支持各種文件格式加密(CAD、OFFICE、PDF、圖紙、計算機程序、課件、游戲動畫、數碼照片、視頻..),用戶也可以根據自己的需要定製;支持出差人員管理;支持文檔外發管理;防止涉密文檔非法擴散。支持控制台審批解密,支持手機審批解密。靈活的許可權控制:只讀,可寫,可編輯,禁止刪除;屏幕水印,圖紙水印,列印水印、禁止拍照等。

二、支持區域網部署和互聯網部署模式,支持總部和異地分支機構分別昌宴團部署;支持單機部署模式;確保公司內部資料的相互流通。

三、支持各種應用系統:支持基於Windows的B/S、C/S的各種業務應用軟體加密,如PDM、PLM、ERP、OA、CRM、CAM、HR、采編軟體、流程管理軟體、電子商務軟體、財務軟體、文檔管理系統、網站服耐橘務器、雲伺服器、企業網盤、手機終端等。

四、支持任意格式文檔類型:Office、Openoffice、Wps、PDF、outlook、FOXMAIL、ARM、ANSYS、Easypro、OA系統、ERP、MSVISIO、AutoCAD、AutodeskInveator、Autovue、ACDSee、Pro/E、Inventor、CAXA、CAJviewer、Protel、PReS、Keil、Quartus、AVRStudio、ARMStudio、SiemensWi、Xtcapp55、TurboCAD、開目CAD、TwinCAD、CATIA、SolidEdge、UG、PowerDraft、Photoline、清華天河CAD、中望CAD、英泰CAD、浩辰CAD、凱思CAD、JEwelCAD、CodeWright、ULTRAEdit、Solidworks、SVN、ZDDS、IAR、、FPWINGR、FX-PCS-DU-WIN-C、FXGPWIN、PhptoShop、DreamWeaver、MTcardEdit、CorelDraw、Fireworks、Flash、ACDSee、ZineMarker、HITACHIEmbeddedworkshop、HIGH-PerformanceEmbeddedworkshop、Embeddedworkshop、CAM350、Matlab、Labview、Illustrator、MAYA、3DMAX、unity、realplay、mediaplayer、Cakewalk、Flash、LRCEditor、Lightscape、BeyondCompare、Java、Delphi、VS.Net、C、VB、VC、C、Java虛擬機、SourceInsight、祥棚WINRAR、EDITplus、IBMClearCase、、PowerPCB、Powerlogic、Powermill、數控傳輸軟體、視頻文件、編程ICC、打標機(票據列印)、CAMtastic、DELcam-Exchange、cimatron、Macrumedia、Microchip、MasterCAM、FastCAM、MyEclipse、Eclipse、Tomcat、MultiGenCreator、FoxPro、Aess、MSSQL、Oracle、WinMerge、XOREAX、InCrediBuid、ZBrush3、JDPaint、BodyPaint3D、英泰PDM、NTKO、KASS、WINRAR、SILKROAD、ETMARK、海康威視監控視頻、郵箱大師、安卓手機、蘋果手機等各種文檔格式,即可自定義加密任意文件格式。

五、支持以下操作系統(32位64位):

WindowsXP、2003、2008、2012、win7、win8、win10;LINUX系統;蘋果MACOS系統;安卓(Android)系統,蘋果IOS系統。

六、支持中文、英文、俄、日文、德文、韓文、法文、西班牙文等各種語言網路環境,支持中文、英文、俄、日文、德文、韓文、法文、西班牙文等各種語言文檔加密。

七、合力天下數據防泄密系統按功能分為以下版本:租用版,普及版,企業版,專業版,行業版,源碼版,OEM版,旗艦版。可以滿足國內各類企事業、設計院所、政府機關單位部署。

『肆』 Java寫一個加密文件或者文件夾的軟體

這個用Java和C#來做估計不太合適,我只能給你提供思路,思路一,HookAPI的CreateProcess和ShellExecute這類打開文件的API函數,然後獲得
打開的文件路徑,然後判定這個文件是否在你的加密資料庫中,如果是加密文件,則彈出密碼框要求輸入密碼才能進入,這個程序需要做成一個常住
後台運行的。思路二寫驅動,這樣可以控制的很好。思路三,偽加密,這個貌似以前多數的加密軟體都是此類模式,就是使用一些系統的屬性將文件
移動到其他位置或者修改屬性進行DOS模式類的隱藏,然後處理的。

熱點內容
電信光纖上傳限制 發布:2024-05-18 16:08:05 瀏覽:910
sql中的limit 發布:2024-05-18 16:05:57 瀏覽:895
啟動ug時伺服器無響應是怎麼回事 發布:2024-05-18 15:48:24 瀏覽:372
小數除法的計演算法則 發布:2024-05-18 15:36:52 瀏覽:530
安卓網卡免驅動如何實現 發布:2024-05-18 15:25:15 瀏覽:860
8加6演算法 發布:2024-05-18 15:04:25 瀏覽:738
名圖16款尊享什麼配置 發布:2024-05-18 14:55:37 瀏覽:585
我的世界怎樣刷出32k伺服器 發布:2024-05-18 14:32:32 瀏覽:565
c語言程序設計江寶釧 發布:2024-05-18 14:32:22 瀏覽:780
右擊文件夾總是轉圈圈 發布:2024-05-18 14:31:10 瀏覽:697