JAVA简单文件加密 求JAVA源代码

[复制链接]
查看11 | 回复1 | 2011-5-19 12:50:14 | 显示全部楼层 |阅读模式
1.Java程序名为EncryptFile.java。在命令行运行方法为
javaEncryptFileinput_filepasswordoutput_file
2.实现利用密码对输入文件的简单加密算法。EncryptFile类中定义两个方
法:
2.1Encrypt方法将输入文件中的每个字符和密码中的对应字符做循环按位
异或操作,即将输入文件的第n个字符和密码的第(n%length)个字符进行
按位异或,得到的结果字符逐一输出到输出文件,其中length为密码的长度。
2.2main方法首先检查命令行参数是否正确,包括命令行参数的个数,输入
文件是否已经存在,输出文件是否已经存在。如果有错误,则打印出错
信息并结束程序。如果正确,调用Encrypt方法生成output.txt。
最后再读入output.txt文件,并在屏幕上显示其内容。
3.为测试程序,执行
javaEncryptFileinput.txt12345678output.txt
回复

使用道具 举报

千问 | 2011-5-19 12:50:14 | 显示全部楼层
md5加密:
packagecom.ncs.pki.util;
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;

publicclassMD5Test{
privatestaticMessageDigestdigest=null;
publicsynchronizedstaticfinalStringhash(Stringdata){
if(digest==null){
try{
digest=MessageDigest.getInstance(\"MD5\");
}catch(NoSuchAlgorithmExceptionnsae){
System.err.println(
\"FailedtoloadtheMD5MessageDigest.\"
\"Jivewillbeunabletofunctionnormally.\");
nsae.printStackTrace();
}
}
//Now,computehash.
digest.update(data.getBytes());
returnencodeHex(digest.digest());
}
publicstaticfinalStringencodeHex(byte[]bytes){
StringBufferbuf=newStringBuffer(bytes.length*2);
inti;

for(i=0;ibytes.length;i){
if(((int)bytes0x10){
buf.append(\"0\");
}
buf.append(Long.toString((int)bytes
}
returnbuf.toString();
}
publicstaticStringtest(){
returnnull;
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.println(MD5Test.hash(\"123456\"));
}

}

3des加密:
packagecom.ncs.pki.util;

importjava.security.Key;
importjava.security.SecureRandom;
importjavax.crypto.Cipher;
importjavax.crypto.KeyGenerator;
importsun.misc.BASE64Decoder;
importsun.misc.BASE64Encoder;

publicclassDesEncrypt{
/**
*
*使用DES加密与解密,可对byte[],String类型进行加密与解密密文可使用String,byte[]存储.
*
*方法:voidgetKey(StringstrKey)从strKey的字条生成一个Key
*
*StringgetEncString(StringstrMing)对strMing进行加密,返回String密文String
*getDesString(StringstrMi)对strMin进行解密,返回String明文
*
*byte[]getEncCode(byte[]byteS)byte[]型的加密byte[]getDesCode(byte[]
*byteD)byte[]型的解密
*/

Keykey;

/**
*根据参数生成KEY
*
*@paramstrKey
*/
publicvoidgetKey(StringstrKey){
try{
KeyGenerator_generator=KeyGenerator.getInstance(\"DES\");
_generator.init(newSecureRandom(strKey.getBytes()));
this.key=_generator.generateKey();
_generator=null;
}catch(Exceptione){
e.printStackTrace();
}
}

/**
*加密String明文输入,String密文输出
*
*@paramstrMing
*@return
*/
publicStringgetEncString(StringstrMing){

byte[]byteMi=null;
byte[]byteMing=null;
StringstrMi=\"\";
BASE64Encoderbase64en=newBASE64Encoder();
try{
byteMing=strMing.getBytes(\"UTF8\");
byteMi=this.getEncCode(byteMing);
strMi=base64en.encode(byteMi);
}catch(Exceptione){
e.printStackTrace();
}finally{
base64en=null;
byteMing=null;
byteMi=null;
}
returnstrMi;
}

/**
*解密以String密文输入,String明文输出
*
*@paramstrMi
*@return
*/
publicStringgetDesString(StringstrMi){
BASE64Decoderbase64De=newBASE64Decoder();
byte[]byteMing=null;
byte[]byteMi=null;
StringstrMing=\"\";
try{
byteMi=base64De.decodeBuffer(strMi);
byteMing=this.getDesCode(byteMi);
strMing=newString(byteMing,\"UTF8\");
}catch(Exceptione){
e.printStackTrace();
}finally{
base64De=null;
byteMing=null;
byteMi=null;
}
returnstrMing;
}

/**
*加密以byte[]明文输入,byte[]密文输出
*
*@parambyteS
*@return
*/
privatebyte[]getEncCode(byte[]byteS){
byte[]byteFina=null;
Ciphercipher;
try{
cipher=Cipher.getInstance(\"DES\");
cipher.init(Cipher.ENCRYPT_MODE,key);
byteFina=cipher.doFinal(byteS);
}catch(Exceptione){
e.printStackTrace();
}finally{
cipher=null;
}
returnbyteFina;
}

/**
*解密以byte[]密文输入,以byte[]明文输出
*
*@parambyteD
*@return
*/
privatebyte[]getDesCode(byte[]byteD){
Ciphercipher;
byte[]byteFina=null;
try{
cipher=Cipher.getInstance(\"DES\");
cipher.init(Cipher.DECRYPT_MODE,key);
byteFina=cipher.doFinal(byteD);
}catch(Exceptione){
e.printStackTrace();
}finally{
cipher=null;
}
returnbyteFina;
}

publicstaticvoidmain(String[]args){
System.out.println(\"desdemo\");
DesEncryptdes=newDesEncrypt();//实例化一个对像
des.getKey(\"MYKEY\");//生成密匙
System.out.println(\"key=MYKEY\");
StringstrEnc=des.getEncString(\"111111\");//加密字符串,返回String的密文
System.out.println(\"密文=\"strEnc);
StringstrDes=des.getDesString(strEnc);//把String类型的密文解密
System.out.println(\"明文=\"strDes);
}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行