Cookies Token - MD5

   之前介绍了 Cookies 的 Value, 其中 NickName 是可以通过勾选 "Show URL decoded " check_box 去显示真正的内容。例如下图1的 UserToken, 即使勾选了 check_box, 也不能显示原来的内容(以下称之为 “明文”) 。


   其实Token这一串密文(为防止泄密,遮挡了部分密文) 是经过MD5加密算法得出的。MD5, 是指 Message Digest Algorithm 5,译为“消息摘要算法第5版” ,对输入信息生成唯一的128位散列值(32个字符),主要运用在数字签名、文件完整性验证以及口令加密等方面。理论上,根据输出的密文,不能得到原始的明文,即其过程不可逆。但现在的MD5已不再是绝对安全,通常黑客可以通过类似于穷举法的碰撞法去逆向破解出明文。


   以明文 "abc123"举例,通过MD5加密得出密文为: “e99a18c428cb38d5f260853678922e03”,代码如下:

import hashlib
 
hash = hashlib.md5()
hash.update("abc123".encode())
print(hash.hexdigest())
# 输出密文为: e99a18c428cb38d5f260853678922e03

   通过碰撞法可以把密文 e99a18c428cb38d5f260853678922e03 还原成明文 “abc123” , 其中核心代码如下,还原的明文结果如 图2,可见破解时间大概为9秒左右,这破解速度是根据明文的复杂程度而定。


def decrypt_md5(md5_value): 
    md5_value=md5_value.lower()
    for k in range(6,8):
        for item in permutations(all_letters,k):
            item=''.join(item)
            print('.',end='')
            if md5(item.encode()).hexdigest()==md5_value:
                return item

   为防止密文被破译,在密码学中,可以通过 “加盐(Salt)” 的方法,那就是在明文的固定位置插入随机串,然后再进行MD5先加密,后乱序:先对明文进行MD5,然后对加密得到的MD5串的字符进行乱序,黑客就算攻破了数据库,也无法解密出正确的明文。以初始密码 123456为明文,随机 加 Salt 为 HNNJJjjmjfsdkmfkdd,代码如下, 通常加 Salt 多重加密,要把密文破译为正确的明文,机率非常低。


   因此,在公共地方,千万不要连接陌生的 wifi 或者登录一些重要的账号密码,尤其涉及金钱的网站。除了MD5加密,还有其它更加安全的非对称性加密方法,例如RSA,SHA,下一期再逐一介绍在反爬虫的主要应用。
from hashlib import md5

password = '123456'  

#  加密后需拼接的 salt, random添加,安全性和长度成正比
salt = 'HNNJJjjmjfsdkmfkdd'

def sign1():
	m = md5()
	m.update(password.encode('utf8'))
	sign1 = m.hexdigest()
	return sign1

def sign2():
	m = md5()
	m.update((sign1() + salt).encode('utf8'))
	sign2 = m.hexdigest()
	return sign2

print(sign2())

图1

在这里插入图片描述


图2
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值