㈠ 使用java做一個加密和隱藏文件的軟體,具體需要怎麼做求指導
不知道你打算怎麼加密呢?隱藏又是什麼意思?是將多個文件合成一個嗎?
因為從操作系統層面來說理應能看到所有合法的文件,因此想要讓操作系統都看不到基本上是不可能的(何況Java也是用的操作系統API來實現對文件的操作)。
就加密我說說我的想法吧,首先需要一個加密的演算法。這個演算法需要滿足:演算法可逆,雙向計算復雜度(時間/空間)低,安全程度高,可靠性高。另外可以考慮並行化來增加性能,因為現在的文件系統大多比較大,管理的東西都不小。
如果能找到這樣一個演算法,可以對於文件使用二進制的讀寫(Binary I/O),然後每讀到一定大小的數據就進行加密運算,並寫入目標加密文件中。如果是解密則是讀取數據進行解密運算。
題外話:我覺得實際上做這樣一個軟體也沒有必要,每次存取文件都需要進行大量的計算操作,也很容易破壞cache的局部性原理。如果真的需要對一部分文件進行加密,也有很多現成的工具可用,甚至於是說現在的壓縮文件都可以帶上密碼加密。所以我認為這個軟體的前景不大,當然如果只是用來玩一玩也是可以的,只不過演算法比較難找而已。(如果用RSA這種級別的演算法估計也行的吧……)
㈡ 如何用java實現文件(不只是txt文本)的整體加密解密
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.security.KeyPair;
importjava.security.KeyPairGenerator;
importjava.security.NoSuchAlgorithmException;
importjava.security.interfaces.RSAPrivateKey;
importjava.security.interfaces.RSAPublicKey;
importjavax.crypto.Cipher;
/**
*文件加密解密
*加解密需要依靠以下四個屬性,
;
staticKeyPairkeyPair;
staticRSAPrivateKeyprivateKey;
staticRSAPublicKeypublicKey;
*@
*
*/
publicclassRSAEncrypt{
;
staticKeyPairkeyPair;
staticRSAPrivateKeyprivateKey;
staticRSAPublicKeypublicKey;
static{
try{
//實例類型
keyPairGen=KeyPairGenerator.getInstance("RSA");
//初始化長度
keyPairGen.initialize(512);
//聲場KeyPair
keyPair=keyPairGen.generateKeyPair();
//Generatekeys
privateKey=(RSAPrivateKey)keyPair.getPrivate();
publicKey=(RSAPublicKey)keyPair.getPublic();
}catch(NoSuchAlgorithmExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
RSAEncryptencrypt=newRSAEncrypt();
Filefile=newFile(
"C:\DocumentsandSettings\Administrator.DCB5E0D91E0D436\桌面\sdf.txt");
FilenewFile=newFile(
"C:\DocumentsandSettings\Administrator.DCB5E0D91E0D436\桌面\sdf1.txt");
encrypt.encryptFile(encrypt,file,newFile);
Filefile1=newFile(
"C:\DocumentsandSettings\Administrator.DCB5E0D91E0D436\桌面\sdf1.txt");
FilenewFile1=newFile(
"C:\DocumentsandSettings\Administrator.DCB5E0D91E0D436\桌面\sdf2.txt");
encrypt.decryptFile(encrypt,file1,newFile1);
}
/**
*加密文件
*@paramencryptRSAEncrypt對象
*@paramfile源文件
*@paramnewFile目標文件
*/
publicvoidencryptFile(RSAEncryptencrypt,Filefile,FilenewFile){
try{
InputStreamis=newFileInputStream(file);
OutputStreamos=newFileOutputStream(newFile);
byte[]bytes=newbyte[53];
while(is.read(bytes)>0){
byte[]e=encrypt.encrypt(RSAEncrypt.publicKey,bytes);
bytes=newbyte[53];
os.write(e,0,e.length);
}
os.close();
is.close();
System.out.println("writesuccess");
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*解密文件
*@paramencryptRSAEncrypt對象
*@paramfile
*@paramnewFile
*/
publicvoiddecryptFile(RSAEncryptencrypt,Filefile,FilenewFile){
try{
InputStreamis=newFileInputStream(file);
OutputStreamos=newFileOutputStream(newFile);
byte[]bytes1=newbyte[64];
while(is.read(bytes1)>0){
byte[]de=encrypt.decrypt(RSAEncrypt.privateKey,bytes1);
bytes1=newbyte[64];
os.write(de,0,de.length);
}
os.close();
is.close();
System.out.println("writesuccess");
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*加密實現
**EncryptString.*
*
*@returnbyte[]加密後的位元組數組
*/
protectedbyte[]encrypt(RSAPublicKeypublicKey,byte[]obj){
if(publicKey!=null){
try{
Ciphercipher=Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE,publicKey);
returncipher.doFinal(obj);
}catch(Exceptione){
e.printStackTrace();
}
}
returnnull;
}
/**
*解密實現
**Basicdecryptmethod*
*
*@returnbyte[]解密後的位元組數組
*/
protectedbyte[]decrypt(RSAPrivateKeyprivateKey,byte[]obj){
if(privateKey!=null){
try{
Ciphercipher=Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE,privateKey);
returncipher.doFinal(obj);
}catch(Exceptione){
e.printStackTrace();
}
}
returnnull;
}
}
㈢ 對Java程序中的一個.xml 配置文件進行加密 如何實現 程序正常運行
可以寫一個xslt文件,對xml進行模板處理,也就是把你xml寫成冗餘的東西,使用xslt進行精煉得到你想要的xml