大家有没有c#对应这个java.des的代码

迷失道 2014-10-20 10:37:48
大家有没有c#对应这个java.des的代码,我在网也找了很多,发现也有很多c# des和java des可以通用的,但是和这个不一样。
一般网上的java des都用了SecretKeyFactory这个, 但我这里帖出来的是用KeyGenerator和SecureRandom生成key的,具体也不太懂。 希望大家能给个和下面通用的c#代码给我,已经花好几天的时间了,最好测试过能用的。谢谢了!

package nc.uap.ws;

/*
* 当前文件:DES.java
*
*/

import java.security.Key;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
*
* 使用DES加密与解密,可对byte[],String类型进行加密与解密 密文可使用String,byte[]存储.
*
* 方法: void getKey(String keyStr) 从keyStr的字条生成一个Key
*
* String encode(String mingTxt) 对mingTxt进行加密,返回String密文 String decode(String
* miTxt) 对miTxt进行解密,返回String明文
*
* byte[] encode(byte[] byteS) byte[]型的加密 byte[] decode(byte[] byteD) byte[]型的解密
*
*/

public class DES {
Key key;

/**
* 根据参数生成key
*
* @param keyStr
*/
public void getKey(String keyStr) {
try {
KeyGenerator _generator = KeyGenerator.getInstance("DES");
_generator.init(new SecureRandom(keyStr.getBytes()));
this.key = _generator.generateKey();
_generator = null;
} catch (Exception e) {
//e.printStackTrace();
}
}

/**
* 加密String明文输入,String密文输出
*
* @param strMing
* @return
*/
public String encode(String mingTxt) {
byte[] byteMi = null;
byte[] byteMing = null;
String miStr = "";
BASE64Encoder base64en = new BASE64Encoder();
try {
byteMing = mingTxt.getBytes("UTF8");
byteMi = this.encode(byteMing);
miStr = base64en.encode(byteMi);
} catch (Exception e) {
//e.printStackTrace();
} finally {
base64en = null;
byteMing = null;
byteMi = null;
}
return miStr;
}

/**
* 解密 以String密文输入,String明文输出
*
* @param miTxt
* @return
*/
public String decode(String miTxt) {
BASE64Decoder base64De = new BASE64Decoder();
byte[] byteMing = null;
byte[] byteMi = null;
String mingStr = "";
try {
byteMi = base64De.decodeBuffer(miTxt);
byteMing = this.decode(byteMi);
mingStr = new String(byteMing, "UTF8");
} catch (Exception e) {
//e.printStackTrace();
} finally {
base64De = null;
byteMing = null;
byteMi = null;
}
return mingStr;
}

/**
* 加密以byte[]明文输入,byte[]密文输出
*
* @param byteS
* @return
*/
private byte[] encode(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) {
//e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}

/**
* 解密以byte[]密文输入,以byte[]明文输出
*
* @param byteD
* @return
*/
private byte[] decode(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) {
//e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;

}

/**
* 第一个参数:密匙 第二个参数:类型(D -> 解密, E -> 加密) 第三个参数:字符串,如果为D,是密文,如果为E,则明文
*
* @param args
*/
public static void main(String[] args) {
DES des = new DES();// 实例化一个对像
des.getKey("bbtttimenc61");// 生成密匙
//des.getKey(args[0]);// 生成密匙
System.out.println(des.encode("123456"));
//if (args[1].equals("D")) {
// System.out.println(des.decode(args[2]));
//} else if (args[1].equals("E")) {
// System.out.println(des.encode(args[2]));
//}
}

}
...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷失道 2015-06-01
  • 打赏
  • 举报
回复
求接分..................
迷失道 2014-10-21
  • 打赏
  • 举报
回复
求答案 再顶下先
迷失道 2014-10-20
  • 打赏
  • 举报
回复
求答案 顶下先

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧