我在java和php中获得了一个字符串的md5。看来java的md5生成时间比php的md5生成时间长。
我的测试,test.java
start = System.nanoTime();
String md5 = Utils.md5("sample test string");
System.out.println(md5);
System.out.println((System.nanoTime()-start)/1000/1000);
Utils.md5 的代码:
public static String md5(String stringToDigest) throws NoSuchAlgorithmException {
if(stringToDigest == null) {
return "";
}
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] s = md.digest(stringToDigest.getBytes());
HexBinaryAdapter hba = new HexBinaryAdapter();
String md5 = hba.marshal(s);
return md5;
}
向我展示:
CCEA62E4F30D422B123B9FDFB02CD496
20
测试.php
<?php
$start = microtime(true);
echo md5('sample test string');
echo "\n".microtime(true)-$start."\n";
向我展示:
ccea62e4f30d422b123b9fdfb02cd496
0.00012302398681641
所以 php 的 md5 生成只需要大约 10-12 毫秒,而 java 的生成大约需要 18-20 毫秒!我的测试错了吗?如果不是,那么还有另一种方法可以比这更快地获得 md5 吗?
编辑:对于所有抱怨 x 比 y 慢的人。我问了这个问题是因为我们正在运行一个应用程序,并且将在 java 中重新设计一个主要块。我们必须在 30 毫秒内处理每个请求。现在如果只生成 md5 会花费这么多时间,项目将被废弃。因此,我谦卑地寻求帮助。愿意帮助的人,非常尊重他们。想攻击的,请寻找其他问题