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;
}

出处:http://blog.csdn.net/evangel_z/article/details/8524887

posted @ 2015-11-02 14:35  邹邹  Views(1048)  Comments(0)    收藏  举报