md5加密算法详解,MD5加密算法,md5加密算法python实现,md5加密算法JS实现,前端加密,md5逆向思维

1、算法介绍

MD5加密(不可逆,摘要算法,hash算法),计算一致性,可以用来做密码的存储,再网页端可以做签名 MD5是一种被广泛使用的线性散列算法,摘要(hash)逻辑,在数学上的计算逻辑就是hash,可以产生出一个128位(16字节)的散列值(hash value), 用于确保信息传输完整的一致性。遇到逆向md5加密时,应该事先判断md5是否被魔改
 

2、md5加密的特征:


1,不可逆
2,相同的内容计算出的摘要应该是一样的
3,不同的结果计算出来的摘要可能天差地别
4,且MD5加密之后产生的是一个固定长度(32位或16位)的数据。

 3、结论

一旦看到了一个长度为32位的密文数据,该数据极有可能是通过md5算法进行的加密!


4、解密:
常规讲MD5是不存在解密的。但是理论上MD5是可以进行反向暴力破解的。暴力破解的大致原理就是用很多不同的数据进行加密后跟已有的加密数据进行对比,
由此来寻找规律。理论上只要数据量足够庞大MD5是可以被破解的。但是要注意,破解MD5是需要考虑破解的成本(时间和机器性能)。
假设破解当前的MD5密码需要目前计算能力最优秀的计算机工作100年才能破解完成。那么当前的MD5密码就是安全的。
增加破解成本的方法(方法很多,这里只说我常用的)。
使用一段无意义且随机的私匙进行MD5加密会生成一个加密串,我们暂且称之为串1
将要加密的的数据跟串1拼接,再进行一次MD5,这时会生成串2
将串2再次进行MD5加密,这时生成的串3就是我们加密后的数据。
我们在注册账号时的密码一般都是用的MD5加密。

 4、python实现md5加密 


from hashlib import md5
#(同种算法的还有sha1,sha256,sha384,sha224,sha512等,使用原理跟md5相同)
#为了防止撞库,选择加盐算法(算法原理就是在原来的加密字符的前面加上一个新的字节)
obj = md5(b"加盐的字符集") # 这里的对象是一次性的,不可以多次重复使用,如果多次使用,会导致加密的内容相加后再加密
s = '这是要加密的字符串'
obj.update(s.encode("utf-8")) #转化形式。这个内容必须是字节,update不可重复使用,若多次使用,得到的是字符串拼接之后的加密内容,encode里面的转化形式跟你需要加密的数据有关系,中文需要UTF-8,而数字等是属于阿斯克码范围,默认就行

5、JS实现MD5加密

val = obj.hexdigest() #得到32位16进制的数字
<html>
   <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js"></script>
    <script type="text/javascript">
      var hashCode = md5("i am bobo!");
      alert(hashCode)
   </script>
</html>

 

6、逆向md5思维

 上述代码的核心关键字:md5
如何看出JS里面用的是MD5加密:
1、在JS运行过程中看见md5字样
2、有固定的长度,看见了长度是32位、16进制的数字的字符串 (0-9 a-f)
如何确定100%是md5(标准):
计算123456--e10abc开头,大概率就是标准的md5加密
在console里面计算一下加密函数,跟上面一样就说明此函数采用的是MD5加密 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dear.爬虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值