Java和C# MD5

上网参考了很多实例和范文,终于解决了多个字符MD5结果Java与C#一致了,直接上代码~

Java代码

public static String md5One(String s){
		MessageDigest  md = null;
        try {
            md = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e.getMessage());
        }
        md.update(s.getBytes());
        return ByteUtil.byteArrayToHexString(md.digest());
}
	
public static String md5Three(String clientId,String pwd,String timestamp){
		clientId=clientId==null?"":clientId;
		pwd=pwd==null?"":pwd;
		timestamp=timestamp==null?"":timestamp;
		while(timestamp.length()<10){
			timestamp="0"+timestamp;
		}
		MessageDigest  md = null;
        try {
            md = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e.getMessage());
        }
        md.update(clientId.getBytes());
        md.update(new byte[7]);
        md.update(pwd.getBytes());
        md.update(timestamp.getBytes());
        
        return ByteUtil.byteArrayToHexString(md.digest());        
}

C#代码

public static string md5One(string s)
{
            MD5 md = new MD5CryptoServiceProvider();
            byte[] ss = md.ComputeHash(UnicodeEncoding.UTF8.GetBytes(s));
            return ByteUtil.byteArrayToHexString(ss);
}
public static string md5Three(String clientId, String pwd, String timestamp)
{            
            clientId = clientId == null ? "" : clientId;
            pwd = pwd == null ? "" : pwd;
            timestamp = timestamp == null ? "" : timestamp;
            while (timestamp.Length < 10)
            {
                timestamp = "0" + timestamp;
            }
            MD5 md = new MD5CryptoServiceProvider();
            string s7 = UnicodeEncoding.UTF8.GetString(new byte[7]);
            s7 = string.Concat(clientId, s7, pwd, timestamp);
            byte[] result = md.ComputeHash(UnicodeEncoding.UTF8.GetBytes(s7));

            return ByteUtil.byteArrayToHexString(result);
}

单个字符

string aa = SMGP.util.myMD5.md5One("159753"); 

//java 5583413443164b56500def9a533c7c70

//C# 5583413443164b56500def9a533c7c70

多个字符

string tt = SMGP.util.myMD5.md5Three("123", "456", "159753");

//java 68ad26b4a406add27a6c659e6f7df508

//C# 68ad26b4a406add27a6c659e6f7df508

通用部分

private static string[] HexCode ={ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

public static string byteToHexString(byte b) {
		int n = b;
		if (n < 0) {
			n = 256 + n;
		}
		int d1 = n / 16;
		int d2 = n % 16;
		return HexCode[d1] + HexCode[d2];
}

public static String byteArrayToHexString(byte[] b) {
		String result = "";
		for (int i = 0; i < b.Length; i++) {
			result = result + byteToHexString(b[i]);
		}
		return result;
}



 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值