python Crypto AES-256-ECB 与PHP之间完成加解密,,AES算法描述:
python Crypto AES-256-ECB 与PHP之间完成加解密,,AES算法描述:
AES算法描述:
首先AES是一种对称加密算法。
算法特点:
1、AES的区块长度固定为128 比特(16字节)。
# 因此在加密前需要对待加密字符串进行填充,长度填充至128bit整数倍。
2、密钥长度可以是128(AES-128-ECB),192(AES-192-ECB)或256(AES-256-ECB)比特。
# 在加解密前需要对加密密钥进行填充,填充至对应位数。
1、php:aes-256-ecb解密:
<?php$encryptString = base64_decode($encryptString);$iv = openssl_random_pseudo_bytes(16);$decryptedpass = rtrim(openssl_decrypt($enpass,‘aes-256-ecb‘, "16位密钥" ,OPENSSL_RAW_DATA, $iv), "\0\4");
2、python:aes-256-ecb加解密(1、代码是从别的博客搬过来后修改的;2、python是基于python2.7.2)
import base64from Crypto.Cipher import AESclass AESCipher(): def __init__(self, key): self.key = key self.key = key + (32-len(key)) * chr(0) # self.key = key + (24-len(key)) * chr(0) # AES-192-ECB # self.key = key + (16-len(key)) * chr(0) # AES-128-ECB self.BLOCK_SIZE = 16 # Bytes self.pad = lambda s: s + (self.BLOCK_SIZE - len(s) % self.BLOCK_SIZE) * chr(self.BLOCK_SIZE - len(s) % self.BLOCK_SIZE) self.unpad = lambda s: s[:-ord(s[len(s) - 1:])] def encrypt(self, raw): raw = self.pad(raw) cipher = AES.new(self.key, AES.MODE_ECB) return base64.b64encode(cipher.encrypt(raw)) def decrypt(self, enc): enc = base64.b64decode(enc) cipher = AES.new(self.key, AES.MODE_ECB) return self.unpad(cipher.decrypt(enc))
3、openssl 命令行:
cat "加密串" | openssl enc -aes-256-ecb -e -Kbase64encode("16位加密密钥") -iv 000 -a -nopad
# 其中在ECB模式下是不需要初始化向量IV,(ECB是直接按照拆分后数据块加解密的),但是不接IV是会在命令行报错的,(上述PHP代码中的IV其实是可以省略的)
总结:
AES-ECB,是将原始字符串分成128bit的若干数据块进行加解密的、当密钥长度为192时为AES-192-ECB模式;密钥长度为256时为AES-256-ECB模式。
坑:
当密钥长度为16字节时,在PHP与OpenSSL命令行中,只要修改加解密模式,原始密钥不需要进行修改就能完成相应功能,但是python作为世界上第二号的语言,只能自己修改密钥长度、自己扩充输入源。
python Crypto AES-256-ECB 与PHP之间完成加解密
相关内容
- Python_sniffer(网络嗅探器),sniffer使用教程,import soc
- python_levenshtein 的安装和使用,,下载whl地址:ht
- python_配置文件_yaml,python读conf配置文件,一.配置文件:
- 用VS2019写第一个Python程序-Hello, Python!,,第一步: 打
- Python-迭代器,python迭代器两个基本方法,一、可迭代对
- python分布式框架rq的使用,python分布式任务调度,RedisQ
- python????????????__reduce__()?????????,pythonreduce函数,????????
- 掌握这7个Python技巧,数据分析不怕!,数据分析的工具
- python中for in的用法,pythonforin循环,for in 说明:
- python 竖排文本,python文本分析和提取,新建目录train,
评论关闭