加密算法逻辑

1. MD5

MD5算法属于Hash算法一类。MD5算法对输入任意长度的消息进行运行,输出128位(32位的数字字母混合码)。不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样。

python实现

from hashlib import md5   # MD5是一个大的hash算法,不是加密,它不存在解密的逻辑
# hash算法是不可逆的
# 可以加盐(相当于密钥)(可以不加
salt = "生日:06-26"
salt = salt.encode("utf-8")   # 用字节形式
# 加密器
# obj = md5()   # 不加盐
obj = md5(salt) # 加盐

# 准备好要加密的内容

password = "身份证: 5115442355851258741112"  # 此身份证不含任何信息
obj.update(password.encode("utf-8"))
"""
利用字节是为了满足各种环境,字符串可以进行md5运算,某个文件的下载也可以进行md5运算
"""

# 获取到密文
miwen = obj.hexdigest()
print(miwen)    # b5151eed9f9e07e5feb3d1703d4419d8
print(miwen)    # 加盐后: 4715a106a2de48adf29e6909ae481ffa

对文件进行md算法运算

先准备一个文件,不管是什么类型,txt,csv,docx,jpg,mp4等等都可以
	python实现
from hashlib import md5

obj = md5()    # 可自行加盐

with open("刘宪华.txt",mode="rb") as f:    # 刘宪华.txt是我事先准备好的文件
    for line in f:
        # print(line)
        obj.update(line)

print(obj.hexdigest())    # 8f133287cba3575e4750b31cea713d14
# 如果我删除了末尾句号  得到的结果 天差地别
print(obj.hexdigest())    # 3fd5379544f4521474846e56b708f570

sha sha和md5是相类似的,python代码和md5几乎一模一样

from hashlib import sha1,sha256,sha512,sha224,sha384,sha3_224   # MD5是一个大的hash算法,不是加密,它不存在解密的逻辑
"""
sha和md5都从属于hash算法,所以只需要将md5换成sha算法就可以了
"""

# hash算法是不可逆的

# 可以加盐(相当于密钥)
salt = "生日:06-26"
salt = salt.encode("utf-8")

# 加密器
obj = sha1(salt)    # sha256,sha512,sha224,sha384 

# 准备好要加密的内容

password = "身份证: 5115442355851258741112"
obj.update(password.encode("utf-8"))
"""
利用字节是为了满足各种环境,字符串可以进行md5运算,某个文件的下载也可以进行md5运算
"""


# 获取到密文
miwen = obj.hexdigest()
print(miwen)    # b5151eed9f9e07e5feb3d1703d4419d8
print(miwen)    # 加盐后: 4715a106a2de48adf29e6909ae481ffa

2.urlencode

简单看一个小案例就是,直接百度搜索刘宪华,抓包看到的结果:https://www.baidu.com/s?wd=%E5%88%98%E5%AE%AA%E5%8D%8E
明明只输入了一个“刘宪华” :我们可以用python来实现urlencode(url + encode)
from urllib.parse import urlencode,unquote

# 准备url

base_url = "http://www.baidu.com/s?"
# 后面的参数为     ?x1=xxxx1&x2=xxxx2&x3=xxxx3&....
# https://www.baidu.com/s?wd=%E5%88%98%E5%AE%AA%E5%8D%8E&rsv_spt=1&rsv_iqid=0xcf31c5200009f0a5&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=49055317_28_hao_pg&rsv_dl=tb&rsv_enter=1&rsv_sug3=30&rsv_sug1=15&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=%25E5%2588%2598%25E5%25AE%25AA%25E5%258D%258E&rsp=5&inputT=9160&rsv_sug4=9891
param_dic = {
   
    "wd":"刘宪华",
}
result = urlencode(param_dic)
print("wd的值"+result)   # wd=%E5%88%98%E5%AE%AA%E5%8D%8E  和某°的第一个参数一模一样
url = base_url + result
print("urlencode后的结果: "+url)  # urlencode后的结
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值