笔者通过使用openssl工具的时候发现openssl的加密比较奇怪,和很多其他加密工具不一致。
比如对123进行加密
java实现如下:
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
public static String encryptToMD5(String str) {
byte[] byteArray = null;
try {
//得到一个MD5的消息摘要
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
//添加要进行计算摘要的信息
messageDigest.update(str.getBytes());
//得到该摘要
byteArray = messageDigest.digest();
} catch
(NoSuchAlgorithmException e) {
e.printStackTrace();
}
// 将摘要转为字符串 返回
BigInteger bigInt = new BigInteger(1, byteArray);
return bigInt.toString(16);
}
public static void main(String[] args) {
String str = "123";
String s = encryptToMD5(str);
System.out.println("s = " + s);
}
}
s = 202cb962ac59075b964b07152d234b70
而在openssl中发现
image.png和期望的不一致!!!
很是纳闷,然后通过搜索引擎找到几个网站
http://tool.chinaz.com/tools/md5.aspx
123 加密成md5加密结果和我的都一致,为什么openssl的和我的不一致呢?
后来找到一篇文章,发现是因为
echo 123| openssl md5
命令把回车也当做一个字符进行了加密
解决方法是echo -n 123 | openssl md5
echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
而这就是最大的元凶!!
最后看一下结果,哈哈,问题解决!
openssl md5
参考文章:
网友评论