[加密]JAVA与.NET加密结果相同的MD5算法

来源:互联网 发布:机顶盒看直播软件 编辑:程序博客网 时间:2024/06/06 05:26

最近用到MD5加密算法

看到网上有许多人说.NET和JAVA的加密结果不一样

综合了一下网上的解决方法

得出以下结论:

C#的默认的Byte范围和JAVA不一样,

所以在JAVA代码里把Byte改成16位的,再加密。


JAVA代码:

public String MD5(String s) {          //16进制下数字到字符的映射数组           char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',                 'a', 'b', 'c', 'd', 'e', 'f' };         try {             byte[] strTemp = s.getBytes();             MessageDigest mdTemp = MessageDigest.getInstance("MD5");             mdTemp.update(strTemp);             byte[] md = mdTemp.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) {             // TODO: handle exception             e.printStackTrace();             return null;         }     }  


0 0