用DES对文件加密的程序
2006-02-18 14:41
239 查看
用DES对文件加密的程序
作者:周顺利
这个程序使用了J***A类库的功能实现对磁盘文件的加密,加密算法采用DES加密,不过经过简单的修改我们可以采用JDK的 其他加密算法.在加密文件以前必须用JDK工具Keytool生成一个.ks库文件.这里为jpatkeystore.ks密码为changeit.具体参考keytool的帮助!
import java.io.*;
import javax.crypto.*;
import java.security.Key;
import java.security.KeyStore;
public class FileEncryption
{
static final String KEYSTORE="jpatkeystore.ks";
static final String KEYALIAS="examplesRSApair";
static final String STOREPASSWD="changeit";
static final String ALIASPASSWD="changeit";
private static Key getKey()
{
Key k=null;
try
{
KeyStore ks=KeyStore.getInstance("JCEKS");
ks.load(new FileInputStream(KEYSTORE),STOREPASSWD.toCharArray());
if(ks.isKeyEntry(KEYALIAS))
{
k=ks.getKey(KEYALIAS,ALIASPASSWD.toCharArray());
}
else
{
KeyGenerator kg=KeyGenerator.getInstance("DES");
k=kg.generateKey();
ks.setKeyEntry(KEYALIAS,k,ALIASPASSWD.toCharArray(),null);
ks.store(new FileOutputStream(KEYSTORE),STOREPASSWD.toCharArray());
}
}
catch(Exception x)
{
System.out.println(x);
x.printStackTrace();
}
return k;
}
private static Cipher getCipher(int opMode)
{
Cipher c=null;
try
{
Key k=getKey();
c=Cipher.getInstance(k.getAlgorithm());
c.init(opMode,k);
}
catch(Exception x)
{
System.out.println(x);
x.printStackTrace();
}
return c;
}
private static void encryptFile(String clearFile,String encrFile)
{
try
{
FileInputStream fis=new FileInputStream(clearFile);
FileOutputStream fos=new FileOutputStream(encrFile);
Cipher c=getCipher(Cipher.ENCRYPT_MODE);
CipherOutputStream cphout=new CipherOutputStream(fos,c);
byte[] byteBuff=new byte[8196];
int bytesRead=fis.read(byteBuff);
while(bytesRead!=-1)
{
cphout.write(byteBuff,0,bytesRead);
bytesRead=fis.read(byteBuff);
}
cphout.close();
fis.close();
fos.close();
}
catch(IOException iox)
{
System.out.println(iox);
}
}
private static void decryptFile(String encrFile,String clearFile)
{
try
{
FileInputStream fis=new FileInputStream(encrFile);
Cipher c=getCipher(Cipher.DECRYPT_MODE);
CipherInputStream cphin=new CipherInputStream(fis,c);
FileOutputStream fos=new FileOutputStream(clearFile);
byte[] byteBuff=new byte[8196];
int byteRead=cphin.read(byteBuff);
while(byteRead!=-1)
{
fos.write(byteBuff,0,byteRead);
byteRead=cphin.read(byteBuff);
}
fis.close();
fos.close();
cphin.close();
}
catch(IOException iox)
{
System.out.println(iox);
}
}
private static void displayUsageMessage()
{
System.out.println("Usage:"+FileEncryption.class.getName()+"{/e|/d}"+"soruce_file target_file");
}
public static void main(String[] args)
{
if(args.length<2)
{
}
else
{
if(args[0].equalsIgnoreCase("/e"))
{
encryptFile(args[1],args[2]);
System.out.println(args[1]+"successfully encrytped as"+args[2]);
}
else if(args[0].equalsIgnoreCase("/d"))
{
decryptFile(args[1],args[2]);
System.out.println(args[1]+"successfully decrypted as"+args[2]);
}
else
{
displayUsageMessage();
}
}
}
}
作者:周顺利
这个程序使用了J***A类库的功能实现对磁盘文件的加密,加密算法采用DES加密,不过经过简单的修改我们可以采用JDK的 其他加密算法.在加密文件以前必须用JDK工具Keytool生成一个.ks库文件.这里为jpatkeystore.ks密码为changeit.具体参考keytool的帮助!
import java.io.*;
import javax.crypto.*;
import java.security.Key;
import java.security.KeyStore;
public class FileEncryption
{
static final String KEYSTORE="jpatkeystore.ks";
static final String KEYALIAS="examplesRSApair";
static final String STOREPASSWD="changeit";
static final String ALIASPASSWD="changeit";
private static Key getKey()
{
Key k=null;
try
{
KeyStore ks=KeyStore.getInstance("JCEKS");
ks.load(new FileInputStream(KEYSTORE),STOREPASSWD.toCharArray());
if(ks.isKeyEntry(KEYALIAS))
{
k=ks.getKey(KEYALIAS,ALIASPASSWD.toCharArray());
}
else
{
KeyGenerator kg=KeyGenerator.getInstance("DES");
k=kg.generateKey();
ks.setKeyEntry(KEYALIAS,k,ALIASPASSWD.toCharArray(),null);
ks.store(new FileOutputStream(KEYSTORE),STOREPASSWD.toCharArray());
}
}
catch(Exception x)
{
System.out.println(x);
x.printStackTrace();
}
return k;
}
private static Cipher getCipher(int opMode)
{
Cipher c=null;
try
{
Key k=getKey();
c=Cipher.getInstance(k.getAlgorithm());
c.init(opMode,k);
}
catch(Exception x)
{
System.out.println(x);
x.printStackTrace();
}
return c;
}
private static void encryptFile(String clearFile,String encrFile)
{
try
{
FileInputStream fis=new FileInputStream(clearFile);
FileOutputStream fos=new FileOutputStream(encrFile);
Cipher c=getCipher(Cipher.ENCRYPT_MODE);
CipherOutputStream cphout=new CipherOutputStream(fos,c);
byte[] byteBuff=new byte[8196];
int bytesRead=fis.read(byteBuff);
while(bytesRead!=-1)
{
cphout.write(byteBuff,0,bytesRead);
bytesRead=fis.read(byteBuff);
}
cphout.close();
fis.close();
fos.close();
}
catch(IOException iox)
{
System.out.println(iox);
}
}
private static void decryptFile(String encrFile,String clearFile)
{
try
{
FileInputStream fis=new FileInputStream(encrFile);
Cipher c=getCipher(Cipher.DECRYPT_MODE);
CipherInputStream cphin=new CipherInputStream(fis,c);
FileOutputStream fos=new FileOutputStream(clearFile);
byte[] byteBuff=new byte[8196];
int byteRead=cphin.read(byteBuff);
while(byteRead!=-1)
{
fos.write(byteBuff,0,byteRead);
byteRead=cphin.read(byteBuff);
}
fis.close();
fos.close();
cphin.close();
}
catch(IOException iox)
{
System.out.println(iox);
}
}
private static void displayUsageMessage()
{
System.out.println("Usage:"+FileEncryption.class.getName()+"{/e|/d}"+"soruce_file target_file");
}
public static void main(String[] args)
{
if(args.length<2)
{
}
else
{
if(args[0].equalsIgnoreCase("/e"))
{
encryptFile(args[1],args[2]);
System.out.println(args[1]+"successfully encrytped as"+args[2]);
}
else if(args[0].equalsIgnoreCase("/d"))
{
decryptFile(args[1],args[2]);
System.out.println(args[1]+"successfully decrypted as"+args[2]);
}
else
{
displayUsageMessage();
}
}
}
}
相关文章推荐
- DES加密解密工具2.1及其代码——支持字符串及文件加密,支持3重DES
- [C++]DES加密解密工具2.1及其代码——支持字符串及文件加密,支持3重DES
- 实现对文件进行加密,解密程序代码
- 安装程序不能验证Update.inf文件的完整性,请确定加密服务正在此计算机上执行
- 关于des文件的加密,解密。
- 使用C#编写DES加密程序的framework
- DES数据加密与文件加密Template
- DES文件字符加密解密
- Java实现DESede(双重DES)对文件加密
- 文件加密小程序
- Java批量加密解密文件简单小程序
- Android平台和java平台 DES、3DES、RSA加密解密互通程序及其不能互通的原因
- [转]C# DES 加密/解密类库,支持文件和中文/UNICODE字符,返回BASE64编码字符串
- 微信小程序:DES3加密接口解决方案
- 安装程序不能验证Update.inf文件的完整性,请确定加密服务正在此计算机上运行
- 写一个程序,对文件stud.dat加密,…
- 文件加密解密小程序
- 2007年中加密 Office 打开 XML 文件中包含宏不运行 Office 程序
- linux 下密码加密程序(可以用于替换shadow文件中的用户密码)
- 最简单的一小段文件加密程序(c语言)