一个java的DES加解密类转换成C#文档格式.docx

上传人:b****4 文档编号:8160788 上传时间:2023-05-10 格式:DOCX 页数:16 大小:17.33KB
下载 相关 举报
一个java的DES加解密类转换成C#文档格式.docx_第1页
第1页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第2页
第2页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第3页
第3页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第4页
第4页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第5页
第5页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第6页
第6页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第7页
第7页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第8页
第8页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第9页
第9页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第10页
第10页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第11页
第11页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第12页
第12页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第13页
第13页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第14页
第14页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第15页
第15页 / 共16页
一个java的DES加解密类转换成C#文档格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

一个java的DES加解密类转换成C#文档格式.docx

《一个java的DES加解密类转换成C#文档格式.docx》由会员分享,可在线阅读,更多相关《一个java的DES加解密类转换成C#文档格式.docx(16页珍藏版)》请在冰点文库上搜索。

一个java的DES加解密类转换成C#文档格式.docx

  privatestaticfinalbyte[]iv={0x12,0x34,0x56,0x78,(byte)0x90,(byte)0xab,(byte)0xcd,(byte)0xef};

//des向量

  privatestaticBASE64Encoderenc=newBASE64Encoder();

//将byte[]转换成String

  privatestaticBASE64Decoderdec=newBASE64Decoder();

//将String转换成byte[]

  *加密字节数组

  *

  *@paramarrB

  * 

 

需加密的字节数组

  *@paramkey

密钥

  *@return加密后的字节数组

  *@throwsException

  publicstaticbyte[]encrypt(byte[]arrB,Stringkey)throwsException{

  DESKeySpecdesKeySpec=newDESKeySpec(key.getBytes());

  SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("

DES"

);

  SecretKeysecretKey=keyFactory.generateSecret(desKeySpec);

  IvParameterSpecivp=newIvParameterSpec(DESPlus.iv);

  CipherencryptCipher=Cipher.getInstance("

DES/CBC/PKCS5Padding"

  encryptCipher.init(Cipher.ENCRYPT_MODE,secretKey,ivp);

  returnencryptCipher.doFinal(arrB);

  }

  *加密字符串

  *@paramxml

需加密的字符串

  *@return加密后的字符串

  publicstaticStringencrypt(Stringxml,Stringkey)throwsException{

  //returnDESPlus.enc.encode(encrypt(xml.getBytes(),key));

  returnnewString(encrypt(xml.getBytes(),key));

  *使用默认公钥加密字符串

  *@paramxml需加密的字符串

  publicstaticStringencrypt(Stringxml)throwsException{

  returnencrypt(xml,strDefaultKey);

  *解密字节数组

需解密的字节数组

  *@return解密后的字节数组

  publicstaticbyte[]decrypt(byte[]arrB,Stringkey)throwsException{

  CipherdecryptCipher=Cipher.getInstance("

  decryptCipher.init(Cipher.DECRYPT_MODE,secretKey,ivp);

  returndecryptCipher.doFinal(arrB);

  *解密字符串

需解密的字符串

  *@return解密后的字符串

  publicstaticStringdecrypt(Stringxml,Stringkey)throwsException{

  returnnewString(decrypt(DESPlus.dec.decodeBuffer(xml),key));

  *使用默认公钥解密字符串

  *@paramxml需解密的字符串

  publicstaticStringdecrypt(Stringxml)throwsException{

  returndecrypt(xml,strDefaultKey);

  *从指定字符串生成密钥,密钥所需的字节数组长度为8位不足8位时后面补0,超出8位只取前8位

  *@paramarrBTmp

构成该字符串的字节数组

  *@return生成的密钥

  *@throwsjava.lang.Exception

  privateKeygetKey(byte[]arrBTmp)throwsException{

  //创建一个空的8位字节数组(默认值为0)

  byte[]arrB=newbyte[8];

  //将原始字节数组转换为8位

  for(inti=0;

i<

arrBTmp.length&

&

arrB.length;

i++){

  arrB[i]=arrBTmp[i];

//生成密钥

  Keykey=newjavax.crypto.spec.SecretKeySpec(arrB,"

  returnkey;

  *获取默认密钥

  *@return

  publicstaticStringgetDesKey(){

  returnDESPlus.strDefaultKey;

  publicstaticvoidmain(String[]args){

  try{

  //测试密匙

  Stringkey="

BOC_PLFP"

  //004交易案例

  Stringxml="

<

?

xmlversion=\"

1.0\"

encoding=\"

UTF-8\"

>

ROOT>

HEADER>

TRANNO>

004<

/TRANNO>

BNKNO>

17850<

/BNKNO>

COMNO>

COM01<

/COMNO>

SN>

1109141222222660161<

/SN>

/HEADER>

BODY>

TRANLOG>

APPNO>

0000000123<

/APPNO>

NOTATION>

客户信息不完整,请补充资料。

/NOTATION>

/TRANLOG>

/BODY>

/ROOT>

"

  System.out.println("

密钥:

+key);

加密前的字符串:

+xml);

加密前的字符串长度:

+xml.getBytes().length);

  //加密

  xml=DESPlus.encrypt(xml,key);

加密后的字符串:

加密后的字符串长度:

  //解密

  xml=DESPlus.decrypt(xml,key);

解密后的字符串:

解密后的字符串长度:

  }catch(Exceptione){

  e.printStackTrace();

*解密字符串

  //生成密钥

上面运行结果为:

  密钥:

BOC_PLFP

  加密前的字符串:

xmlversion="

1.0"

encoding="

UTF-8"

  加密前的字符串长度:

262

  加密后的字符串:

bE5N44gjyfO3SdUs6/OhVg4I4l725S2vWcKBRxYOAd/eAnyuADKXeNNgVXJMj3aJJzndntv364rh

  YW2bF33lmEABMU43HfS8DcXX7+QrcIjp3mrk7uJdiNHu4T4oHMeqetFZqU5oh2XY1sbBPPdGEgMf

  /OguRVaTblzl/ylkFc6C9BNNSD0IwL0Ks7Mi73+V76P+aFdPgXQc7u4Vkq8Cd6+HgHErbHbJI729

  JPJKM5L2YAAW4Q06oi4yMoEASDjYf7Aa1X/FWqclsZImSDB0okGOiuj857l94BM1zYl2RtWdXa9o

  0beiL4CbEvKSC3U3PydAI0+mZbtE0sVkyP0sXTke7ifrwiMG

  加密后的字符串长度:

360

  解密后的字符串:

  解密后的字符串长度:

262,修改里面的des向量iv,字符编码UTF8为Default等,最终改写为C#代码如下:

  usingSystem;

  usingSystem.Collections.Generic;

  usingSystem.Linq;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2