Python、JS摘要&加密算法

摘要加密

摘要加密,通常指的是使用哈希算法(如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=


AES解密实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值