请教一段JAVA代码转C#

SqlDataAdapter 2014-04-04 12:10:14
private static final String ALGORITHM_DESEDE = "DESede";

public static void main(String[] args){
String keyStr="123412341234123412341234"; //密钥
//password+接口参数中的timestamp字段
String verifySign="189201304152013-05-15 16:12:12.123";
System.out.println(verifySignEncode(keyStr,verifySign));

}

/**
* 根据字符串系统的加密算法要求生成加密字符串
* @param str
* @param keybyte
* @return String 加密后的字符串
*/
public static String verifySignEncode(String keyStr,String verifyStr) {
try {
byte[] signBytes = encrypt(keyStr, encoderByMd5(reverse(verifyStr.getBytes(ENCODING))));
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(signBytes);
} catch (Exception e) {
log.error(EncryptUtil.class, e);
return "";
}
}


/**
* 字节数组翻转
*
* @param byte[]
* @return byte[]
*/
private static byte[] reverse(byte[] bytes) {
int length = bytes.length / 2;
byte buf;
for (int i = 0; i < length; i++) {
buf = bytes[bytes.length - 1 - i];
bytes[bytes.length - 1 - i] = bytes[i];
bytes[i] = buf;
}
return bytes;
}


/**
* 利用MD5进行加密,采用JDK自带的MD5算法 返回一个经过MD5加密后的32位的信息摘要
*
* @return String
*/
public static byte[] encoderByMd5(byte[] bytes) throws Exception {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(bytes);
byte[] byteArray = messageDigest.digest();
return byteArray;
}


/**
* 3DES加密 keyStr为加密密钥,长度为24字节. src为被加密的数据缓冲区(源)
*
* @param ketStr
* @param src
* @return
*/
public static byte[] encrypt(String keyStr, byte[] src) {
return encrypt(keyStr, src, ALGORITHM_DESEDE);
}

/**
* 3DES加密 keybyte为加密密钥,长度为24字节 src为被加密的数据缓冲区(源)
*
* @param keybyte
* @param src
* @param algorithm
* @return
*/
private static byte[] encrypt(String keyStr, byte[] src, String algorithm) {
try {
// 生成密钥
SecretKey deskey =new SecretKeySpec(keyStr.getBytes(), algorithm);
Cipher c1 = Cipher.getInstance(algorithm);
c1.init(Cipher.ENCRYPT_MODE, deskey);
return c1.doFinal(src);
} catch (java.lang.Exception e3) {
log.error(EncryptUtil.class, e3);
}
return null;
}
...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjp1234airen4385 2014-04-04
  • 打赏
  • 举报
回复
你这个里面有jdk自定的函数,在c#里虽然可以找到类似的函数,但是就怕加密的结果和jdk里的不一样,那就矬了。
宝_爸 2014-04-04
  • 打赏
  • 举报
回复
宝_爸 2014-04-04
  • 打赏
  • 举报
回复
调用了java platform的函数, SecretKey deskey =new SecretKeySpec(keyStr.getBytes(), algorithm); Cipher c1 = Cipher.getInstance(algorithm); 得找到.net中对应的函数才行。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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