文章目录
摘要加密
摘要加密,通常指的是使用哈希算法(如MD5、SHA-1、SHA-256等)对原始数据进行处理,生成一个固定长度的哈希值(或称为摘要、指纹)的过程。这个哈希值用于确保数据的完整性和一致性。
一、哈希算法概述
MD5:
输出长度:128位(16字节)
特性:早期哈希算法,速度快但安全性相对较低,存在哈希碰撞和漏洞。
SHA-1:
输出长度:160位(20字节)
特性:相对于MD5更加安全,但仍然存在哈希碰撞的问题,目前已不再被认为足够安全。
SHA-256:
输出长度:256位(32字节)
特性:相对于MD5和SHA-1更加安全,被广泛应用于需要高度安全性的场景,如比特币等。
二、识别加密后的字符串
长度判断:
由于MD5、SHA-1和SHA-256的输出长度不同,因此可以通过字符串的长度来初步判断其所属的哈希算法。
32位十六进制数(16字节×2=32字符):可能是MD5。
40位十六进制数(20字节×2=40字符):可能是SHA-1。
64位十六进制数(32字节×2=64字符):可能是SHA-256。
格式判断:
哈希值通常以十六进制字符串的形式表示。因此,可以检查字符串是否仅包含十六进制字符(0-9和a-f,小写或大写
)。
在线工具或库:
使用在线哈希算法识别工具或编程库中的函数来验证字符串是否匹配特定哈希算法的格式和特性。
例如,可以编写一个简单的程序或使用在线服务来尝试将字符串作为不同哈希算法的输入进行验证,看哪个算法能够生成匹配的哈希值。
from hashlib import md5
md5_obj=md5()
md5_obj.update('123456'.encode())
res=md5_obj.hexdigest()
print(res)
==========输出结果========
e10adc3949ba59abbe56e057f20f883e
对称加密
对称加密,简而言之,就是使用相同的密钥进行加密和解密的过程。
AES加密
AES(Advanced Encryption Standard,高级加密标准)是一种广泛使用的对称加密算法,支持128位(16字节)、192位(24字节)和256位(32字节)三种密钥长度。加密数据的长度必须是16字节的倍数,因此可能需要进行填充。加密后的数据通常以二进制形式存在,但为了便于网络传输和存储,可以将其转换为16进制或更紧凑的base64编码格式。
AES加密实现
下载第三方库
pip install pycryptodome
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad,unpad
# AES主要分为两种加密模式,CBC需要传入16位的iv,ECB只要key即可 key的长度必须是16、24、32位,加密数据的长度也必须是16的倍数
key='1234567891234567'.encode()
data="123456723123456222\r".encode()
aes=AES.new(key=key,mode=AES.MODE_ECB,)
# 加密数据的长度必须是16的倍数,需要进行相关处理
res_data=pad(data,16)
print(res_data)
res=aes.encrypt(res_data)
print("加密后:",base64.b64encode(res).decode())
=================================
加密后: eMe4RX4yU5RBIbJLE/EGyEZ7QAqZcF3U+ojRRok6ZvA=