遇到一个问题,php AES算法中,由于可以使用mcrypt_create_iv 生成一种随机的iv,使用的是MCRYPT_MODE_ECB模式。我这里需要用python来实现这种算法。
PHP版本:
class Security { public static function encrypt($input, $key) { $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $input = Security::pkcs5_pad($input, $size); $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, ''); $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); mcrypt_generic_init($td, $key, $iv); $data = mcrypt_generic($td, $input); mcrypt_generic_deinit($td); mcrypt_module_close($td); $data = base64_encode($data); return $data; } private static function pkcs5_pad ($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad); } public static function decrypt($sStr, $sKey) { $decrypted= mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $sKey, base64_decode($sStr), MCRYPT_MODE_ECB ); $dec_s = strlen($decrypted); $padding = ord($decrypted[$dec_s-1]); $decrypted = substr($decrypted, 0, -$padding); return $decrypted; } }
python 版本:
from Crypto.Cipher import AES import base64 class Bussiness(object): """ 加密处理类 """ def __init__(self): self.key = 'e28a9468a8204621' self.BS = 16 self.mode = AES.MODE_ECB def encrypt(self,text): """ AES加密方法 """ encryptor = AES.new(self.key,self.mode) #补位 padded_text = text + (self.BS - len(text) % self.BS) * chr(self.BS - len(text) % self.BS) print self.BS - len(text) % self.BS ciphertext = encryptor.encrypt(padded_text) return base64.b64encode(ciphertext) def decrypt(self, text): cryptor = AES.new(self.key,self.mode) plain_text = cryptor.decrypt(base64.b64decode(text)) dec_s = len(plain_text) padding = plain_text[dec_s-1] #删除补位字符串 return plain_text.rstrip(padding)
相关推荐
Dive into Python3 深入Python3 优秀的Python3学习资料。
Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档Pytho3.6 文档
AES密钥和HMAC密钥是使用hashlib的scrypt和一个随机的16字节盐从用户密码生成的(密钥的创建时间是创建密钥的两倍,每个密钥分成两半)。 CTR IV由一个随机的10字节随机数和一个从0开始的6字节计数器创建。salt被写...
一本经典的pytho学习教材(中文版),一本pytho开发的权威指南,更多的高阶内容,如正则表达式,多线程等等......
一个极简主义的SDK,用于使用AmazonWebServices的Pytho.zip
python实现图片风格转换 在别人基础上实现的,有详细注释
Pytho arcpy Pycharm
Machine Learning pytho
使用matrix-nio在python中创建矩阵机器人的模板_Pytho.zip
本篇文章主要介绍了python实现随机森林random forest的原理及方法,详细的介绍了随机森林的原理和python实现,非常具有参考价值,有兴趣的可以了解一下
应变梯度理论模拟(Abaqus上的Python和Fortran)_Pytho.zip
这个项目旨在提供一个非常有趣和令人愉快的纸牌游戏。该游戏使用Tkinter库来复制纸牌纸牌游戏的实际游戏玩法。这只是使用Python编程语言开发游戏的基本练习。 纸牌纸牌游戏仅使用Python编程语言开发。该应用程序的...
用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤...
基于pytho对一段连续视频进行AI智能识别+将指定人脸进行替换源码+项目说明+模型.zip基于pytho对一段连续视频进行AI智能识别+将指定人脸进行替换源码+项目说明+模型.zip基于pytho对一段连续视频进行AI智能识别+将指定...
一本很好的Python 爬虫学习书籍,本人看后对爬虫的认识多了很多,Python真的很强大。
pytho入门到精通全套练习代码、标准(光盘版)
应用pytho进行时间序列分析之arima
pytho实现卫星位置计算,卫星定位,weixing.py
学习利用python实现数据的预处理的程序