openssl md5 加密与java实现或者网上其他实现不一致的问题

笔者通过使用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

和期望的不一致!!!

很是纳闷,然后通过搜索引擎找到几个网站

https://md5jiami.51240.com/

http://tool.chinaz.com/tools/md5.aspx

123 加密成md5

加密结果和我的都一致,为什么openssl的和我的不一致呢?

后来找到一篇文章,发现是因为

echo 123| openssl md5

命令把回车也当做一个字符进行了加密

解决方法是echo -n 123 | openssl md5

echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。

而这就是最大的元凶!!

最后看一下结果,哈哈,问题解决!


openssl md5

参考文章:

官网文档
Linux下使用MD5加密BASE64加密
echo命令

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容