java生成的MD5,和c#的生成的不一致,有java代码,求c#代码!

public static String MD5(byte[] btInput) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };
try {

// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
调用:

byte[] c = xml.getBytes("GBK");
String strSrc = MD5Util.MD5(c);
如果是简单的数字字母组合的 生成的和c#的是一样的,但是如果是大量的字符串,带回车中文字符英文字符标点混合的字符串,就会不一致!求能和此java代码生成的MD5一致的c#代码
求c#代码啊!百度好多加密方法都不对,求高手指点!

考虑一下中文字符问题。两边使用的编码是不是一样的。保持一样就可以了。

建议使用UTF8编码


JAVA代码如下(在你给同的代码上只做了少量修改):

public class Security {

public static void main(String[] args) {
try {
System.out.println(MD5("中国"));
} catch(Exception ex) {}
}

public static String MD5(String txt) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };
try {
byte[] btInput = txt.getBytes("utf-8");
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}


C#代码如下:

static void Main(string[] args)
        {
            Console.WriteLine(Md5("中国"));
            Console.ReadLine();
        }

        static string Md5(string txt) {
            byte[] result = Encoding.UTF8.GetBytes(txt);   
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(result);
            return BitConverter.ToString(output).Replace("-", "");  
        }

追问

4312 好像还不对!能加个Q么,详细请教一下!60779!

前后数字加一起就是的 求帮忙谢谢了啊谢谢了啊!

追答

这个不应该会出问题.请把你需要加密的字符串贴上来,我试一下.

温馨提示:内容为网友见解,仅供参考
无其他回答

java生成的MD5,和c#的生成的不一致,有java代码,求c#代码!
JAVA代码如下(在你给同的代码上只做了少量修改):public class Security {public static void main(String[] args) {try {System.out.println(MD5("中国"));} catch(Exception ex) {}}public static String MD5(String txt) {char hexDigits[] = { '0', '1', '2', '3', '4', '5...

JAVA和C#MD5加密结果不一样,怎么办
static void Main(string[] args){ string input = "357011000026Admin123420141118032643";string output = md5(input);Console.WriteLine(output);Console.ReadLine();} public static string md5(string password){ MD5 md5 = new MD5CryptoServiceProvider();byte[] res = md5.ComputeHash(Encoding.Def...

php 生成的md5 与 C# md5的值不一致?C#中编码用的是GBK的
MD5 转换是 stream → byte[] → BitConvert.ToString(),你别用 Encoding 的方法来显示二进制的内容就行了。

不同语言的md5加密同一字符串,结果是不一样的吗?
贴一段代码:static void Main(string[] args){ MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();byte[] hashedDataBytes;hashedDataBytes = md5Hasher.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes("中文"));StringBuilder tmp = new StringBuilder();foreach (byte i in ...

C#使用Md5加密转码怎么还原
MD5 加密是不可逆的..也就是说.你采用MD5加密后 是无法还原的..而且MD5加密不需要密钥.如果你需要使用有加密密钥,和可解密的加密方式.可以使用AES加密方式 \/\/\/ \/\/\/ AES加密 \/\/\/ \/\/\/ \/\/\/ \/\/\/ <returns><\/returns> public static string Encrypt(string toEncrypt, s...

求写一个计算MD5和CRC的C#类
md5不用自己写了吧。using System.Security.Cryptography;引用这个就可以啦。该命名空间里有MD5生成的类。CRC校验 CRC16位校验,如果是modbus协议的话,应该是第一位是低位,第二位是高位 public byte[] CRC16_C(byte[] data){ byte CRC16Lo;byte CRC16Hi; \/\/CRC寄存器 byte CL; byte CH; ...

为什么md5 c#32位加密算法,密码明文会出现31位
很常见的错误啊,你字节转换成字符串的时候要保证是2位宽度啊,某个字节为0转换成字符串的时候必须是00的,否则就会丢失位数啊。不仅是0,1~9也一样。因此把那个ps += s[i].ToString("x");改为ps += s[i].ToString("x2");就ok了。

md5的问题哦
http:\/\/www.xmd5.com这三个网站都是国人做的。就是说你的MD5.asp这样文件用不起来了。其实在C#语言里没有必要用这些代码,C#自己就带了MD5的加密文件。using System.Security.Cryptography;\/\/\/ \/\/\/ 使用Md5加密技术将密码加密 \/\/\/ \/\/\/ 传入用户所输入的password \/\/\/ <returns>返回加密后的...

java MD5加密转成C#写法
c#用MD5CryptoServiceProvider类 进行MD5加密 MD5CryptoServiceProvider 类 (System.Security.Cryptography)https:\/\/msdn.microsoft.com\/zh-cn\/library\/system.security.cryptography.md5cryptoserviceprovider.aspx using System;using System.Security.Cryptography;using System.Text;\/\/ Hash an input string and...

php与c#生成sha1不一致的问题
您好,摘要的结果当然是一样的,不一样的是你在C#里又把结果转换成了Base64的字符串,这当然就不一样了,你又加工了一遍嘛。FC-5E-03-8D-38-A5-70-32-08-54-41-E7-FE-70-10-B0 这是C#里md5实际的结果和php里的fc 5e 03 8d 38 a57032085441e7fe7010b0 怎么会不一样呢,一个字节一个...

相似回答