java des解密软件_Java-DES算法加密解密工具类

importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importjava.security.Key;importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.CipherInputStream;importjavax.crypto.CipherOutputStream;importjavax.crypto.KeyGenerator;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;public classDESUtil {

Key key ;publicDESUtil() {

}publicDESUtil(String str) {

setKey(str);//生成密匙

}publicKey getKey() {returnkey ;

}public voidsetKey(Key key) {this . key =key;

}///**//* 根据参数生成 KEY//*///public void setKey(String strKey) {//try {//KeyGenerator _generator = KeyGenerator.getInstance ( "DES" );//_generator.init( new SecureRandom(strKey.getBytes()));//this . key = _generator.generateKey();//_generator = null ;//} catch (Exception e) {//throw new RuntimeException(//"Error initializing SqlMap class. Cause: " + e);//}//}

/*** 根据参数生成 KEY*/

public voidsetKey(String strKey) {try{

KeyGenerator _generator= KeyGenerator.getInstance ( "DES");

_generator.init(new SecureRandom(strKey.getBytes("utf-8")));

SecureRandom secureRandom=SecureRandom.getInstance("SHA1PRNG");

secureRandom.setSeed(strKey.getBytes());

_generator.init(56, secureRandom);this . key =_generator.generateKey();

_generator= null;

}catch(Exception e) {throw newRuntimeException("Error initializing SqlMap class. Cause: " +e);

}

}/*** 加密 String 明文输入 ,String 密文输出*/

publicString encryptStr(String strMing) {byte [] byteMi = null;byte [] byteMing = null;

String strMi= "";

BASE64Encoder base64en= newBASE64Encoder();try{

byteMing= strMing.getBytes( "UTF-8");

byteMi= this.encryptByte(byteMing);

strMi=base64en.encode(byteMi);

}catch(Exception e) {throw newRuntimeException("Error initializing SqlMap class. Cause: " +e);

}finally{

base64en= null;

byteMing= null;

byteMi= null;

}returnstrMi;

}/*** 解密 以 String 密文输入 ,String 明文输出

*

*@paramstrMi

*@return

*/

publicString decryptStr(String strMi) {

BASE64Decoder base64De= newBASE64Decoder();byte [] byteMing = null;byte [] byteMi = null;

String strMing= "";try{

byteMi=base64De.decodeBuffer(strMi);

byteMing= this.decryptByte(byteMi);

strMing= new String(byteMing, "UTF-8");

}catch(Exception e) {throw newRuntimeException("Error initializing SqlMap class. Cause: " +e);

}finally{

base64De= null;

byteMing= null;

byteMi= null;

}returnstrMing;

}/*** 加密以 byte[] 明文输入 ,byte[] 密文输出

*

*@parambyteS

*@return

*/

private byte [] encryptByte( byte[] byteS) {byte [] byteFina = null;

Cipher cipher;try{

cipher= Cipher.getInstance ( "DES");

cipher.init(Cipher. ENCRYPT_MODE , key );

byteFina=cipher.doFinal(byteS);

}catch(Exception e) {throw newRuntimeException("Error initializing SqlMap class. Cause: " +e);

}finally{

cipher= null;

}returnbyteFina;

}/*** 解密以 byte[] 密文输入 , 以 byte[] 明文输出

*

*@parambyteD

*@return

*/

private byte [] decryptByte( byte[] byteD) {

Cipher cipher;byte [] byteFina = null;try{

cipher= Cipher.getInstance ( "DES");

cipher.init(Cipher. DECRYPT_MODE , key );

byteFina=cipher.doFinal(byteD);

}catch(Exception e) {throw newRuntimeException("Error initializing SqlMap class. Cause: " +e);

}finally{

cipher= null;

}returnbyteFina;

}/*** 文件 file 进行加密并保存目标文件 destFile 中

*

*@paramfile

* 要加密的文件 如 c:/test/srcFile.txt

*@paramdestFile

* 加密后存放的文件名 如 c:/ 加密后文件 .txt*/

public void encryptFile(String file, String destFile) throwsException {

Cipher cipher= Cipher.getInstance ( "DES");//cipher.init(Cipher.ENCRYPT_MODE, getKey());

cipher.init(Cipher. ENCRYPT_MODE , this. key );

InputStream is= newFileInputStream(file);

OutputStream out= newFileOutputStream(destFile);

CipherInputStream cis= newCipherInputStream(is, cipher);byte [] buffer = new byte [1024];intr;while ((r = cis.read(buffer)) > 0) {

out.write(buffer,0, r);

}

cis.close();

is.close();

out.close();

}/*** 文件采用 DES 算法解密文件

*

*@paramfile

* 已加密的文件 如 c:/ 加密后文件 .txt *

*@paramdestFile

* 解密后存放的文件名 如 c:/ test/ 解密后文件 .txt*/

public void decryptFile(String file, String dest) throwsException {

Cipher cipher= Cipher.getInstance ( "DES");

cipher.init(Cipher. DECRYPT_MODE ,this. key );

InputStream is= newFileInputStream(file);

OutputStream out= newFileOutputStream(dest);

CipherOutputStream cos= newCipherOutputStream(out, cipher);byte [] buffer = new byte [1024];intr;while ((r = is.read(buffer)) >= 0) {

cos.write(buffer,0, r);

}

cos.close();

out.close();

is.close();

}public static void main(String[] args) throwsException {

DESUtil des= new DESUtil("jrkj123");//DES 加密文件//des.encryptFile("G:/test.doc", "G:/ 加密 test.doc");//DES 解密文件//des.decryptFile("G:/ 加密 test.doc", "G:/ 解密 test.doc");

String str1 = "taskId=68&correctDate=2015-04-13&flag=1";//DES 加密字符串

String str2 =des.encryptStr(str1);//DES 解密字符串

String deStr =des.decryptStr(str2);

System. out .println(" 加密前: " +str1);

System. out .println(" 加密后: " +str2);

System. out .println(" 解密后: " +deStr);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值