在日常工作中,我们会碰到忘记了网站管理员用户的密码的情况,这时候我们可以通过直接修改数据库中管理员用户的password字段的值来修改密码,而这个密码通常都是64位MD5值,也许有的人会说计算这个MD5值可以用在线的网站来进行计算,比如cmd5,但是我是不建议这么做,因为这种网站之所以号称对MD5值进行反解比较快,有很大的可能性是用户在使用它的正向加密的时候,它会记录下来,所以它反向解密会很快.当然我们也不能说人家就是这么干的,也许他们的服务器的确运算很快呢?

我是建议大家最好是自己计算MD5,计算MD5的方法很多,可以用sqlserver,mysql,python,php,等等等各种语言内置的MD5
函数来进行计算,这里我就介绍下shell对字符串进行加密的方法.

md5sum默认的使用方法可以对二进制程序,文件等进行MD5加密,但是我们稍微变通下就会发现其实我们可以利用echo "string" | md5sum的方法把标准输入重定向到md5sum.这样是不是就很简单了呢.

上面巴拉巴拉说这么一大堆话,下面开始实例介绍:

shell

echo "123456" | md5sum      //将123456重定向给md5sum
f447b20a7fcbf53a5d5be013ea0b15af  -    //计算出来的结果,其实这是个错误的演示.

mysql

MariaDB [(none)]> select md5("123456");
+----------------------------------+
| md5("123456")                    |
+----------------------------------+
| e10adc3949ba59abbe56e057f20f883e |
+----------------------------------+
1 row in set (0.04 sec)

为什么mysql和Shell算出来的不一样呢,因为echo默认是以换行符做结尾的,所以md5sum其实是将123456\n进行了计算.我们可以用 echo -n "123456" | md5sum计算出我们想要的字符串的MD5值来。
我们也可以用过其他的方式来讲字符串重定向给md5sum作为stdin.
如:

printf 123456 | md5sum     //printf是没有换行符做结尾的
echo 123456 | tr -d '\n' | md5sum  //tr可以删掉一个字符
echo -n "123456" | md5sum