请教一段JAVA代码转C#
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;
}