读书人

“字符串的MD5”?关于怎么计算MD5

发布时间: 2012-02-20 21:18:23 作者: rapoo

“字符串的MD5”?关于如何计算MD5
据我所知,MD5是对“二进制”数据进行处理的一种算法,而在网上看到最多的却是“字符串的MD5”的说法?
我现在搞Java,找了些网上的程序,用Java实现MD5大概就两类方式:
一类是完完全全按照MD5的算法用Java语言写了一遍,这些代码都长的很,我看不下去……
另一类则是利用Java自身提供的MessageDigest来计算MD5,下面就说说这类方式:

你需要给MessageDigest对象的某个方法提供一个字节数组,然后它会将计算得到的结果(比如MD5)返回。
因此那些代码里面都会先将“字符串”转换为“字节数组”,可是转换的方式却各不相同。有的是直接调用无参String.getBytes()方法,有的是干脆取出每个字符用(byte)进行强制类型转。用getBytes()的至少不会产生数据丢失,但是如果平台默认编码发生改变就会有问题了。(byte)强制转换则只能与ASCII保持兼容了,对其它的非单字节字符将造成数据丢失。

虽然上面几种方式,对于在GBK平台下处理只包含ASCII字符的字符串时没什么问题,但是处理包含汉字的字符串时,结果就明显不一样了,所以这个问题是否该明确一下?
请问对于“字符串的MD5值”,是否有什么规定字符串应该按照什么编码方式转换为二进制数据?如果没有的话,我就自己给自己定好了。

[解决办法]
任意,在编程规则中约定即可。

读书人网 >软件架构设计

热点推荐