美文网首页
openssl md5 加密与java实现或者网上其他实现不一致

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

作者: 疯狂的冰块 | 来源:发表于2017-07-30 03:26 被阅读195次

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

    相关文章

      网友评论

          本文标题:openssl md5 加密与java实现或者网上其他实现不一致

          本文链接:https://www.haomeiwen.com/subject/ylrhlxtx.html