`
alfred_long
  • 浏览: 566403 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP AES(随机iv) 和Pytho AES (不使用iv)

阅读更多

遇到一个问题,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 Pytho3

    文件操作也是不可或缺的知识点,包括打开、读取、写入和关闭文件,以及使用with语句来自动管理资源。 Python 3的模块系统使得代码重用变得简单。你会学习如何导入和使用标准库中的模块,如os、sys、math和datetime...

    Pytho3.6 文档 Pytho3.6 文档 Pytho3.6 文档

    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:Python中的高级加密标准(AES)实现

    AES密钥和HMAC密钥是使用hashlib的scrypt和一个随机的16字节盐从用户密码生成的(密钥的创建时间是创建密钥的两倍,每个密钥分成两半)。 CTR IV由一个随机的10字节随机数和一个从0开始的6字节计数器创建。salt被写...

    pytho 核心编程 第二版

    - **Alex Martelli**(《Python in a Nutshell》作者)认为本书深度和广度兼备,非常适合读者学习和实践Python编程。 - **David Mertz**(IBM DeveloperWorks 博士)认为本书是当前最好的Python学习书籍之一,优于...

    pytho实现图片风格变化

    本篇文章将深入探讨如何使用Python来实现图片风格转换,这是一个结合了计算机视觉和深度学习的有趣应用。 图片风格转换是将一张图片(内容图片)的结构信息与另一张图片(风格图片)的风格信息融合,生成一张新的...

    pytho3vcbuildtools.zip

    Python是世界上最受欢迎的编程语言之一,特别是在数据科学、...通过安装`visualcppbuildtools_full.exe`,开发者可以获得必要的编译环境,从而能够成功安装和使用那些需要C/C++支持的Python库,包括多线程相关的模块。

    Pytho arcpy Pycharm

    Pytho arcpy Pycharm

    一个极简主义的SDK,用于使用AmazonWebServices的Pytho.zip

    在这个“ask-alexa-pykit-master”中,我们可以预期找到一系列Python模块和类,这些模块和类可以帮助开发者轻松地处理与Alexa服务的通信,包括但不限于: 1. **初始化配置**:SDK通常会包含一个初始化函数,允许...

    Linux服务器的常用工具和安装shell脚本。安装脚本包括:PHP、NodeJS、Pytho

    Linux服务器的常用工具和安装shell脚本。安装脚本包括:PHP、NodeJS、Python、GCC、Git、SVN、ES、ZK、Redis、MySQL、MongoDB、PostgreSQL、nginx

    使用matrix-nio在python中创建矩阵机器人的模板_Pytho.zip

    总结,"使用matrix-nio在python中创建矩阵机器人的模板_Pytho.zip"项目提供了在Python中快速构建Matrix机器人的基础框架。通过理解Matrix协议、使用Matrix-NIO库以及熟悉模板结构,开发者可以轻松创建具有各种功能的...

    在Pytho 中使用Tkinter的纸牌游戏及其源代码

    这个项目旨在提供一个非常有趣和令人愉快的纸牌游戏。该游戏使用Tkinter库来复制纸牌纸牌游戏的实际游戏玩法。这只是使用Python编程语言开发游戏的基本练习。 纸牌纸牌游戏仅使用Python编程语言开发。该应用程序的...

    Machine Learning A-Z Chinese Template Folder_learninga-z使用_pytho

    "Part 3 - Classification"则涵盖了分类问题,如逻辑回归、决策树和随机森林等。这些模型用于预测离散类别的结果。在这里,你将学习如何使用交叉验证来选择最佳模型,并使用混淆矩阵和其他度量标准来评估模型的准确...

    整合有办公自动化,游戏辅助,多模态文件搜索,能够学习用户分类习惯的AI相册分类器,高级加密等多种常用功能的Pytho.zip

    5. **高级加密**:在信息安全日益重要的今天,Python提供了许多加密库,如cryptography和pycryptodome,可以实现AES、RSA等加密算法,确保数据传输和存储的安全。这些库支持加密、解密、签名、验证等多种功能,对于...

    应变梯度理论模拟(Abaqus上的Python和Fortran)_Pytho.zip

    在这个压缩包“应变梯度理论模拟(Abaqus上的Python和Fortran)_Pytho.zip”中,包含的项目“pantographe-mechanics-simulation-master”很可能是一个使用Abaqus进行应变梯度模拟的开源研究或教学项目。Abaqus是一款...

    用pytho实现烟花特效的步骤及代码示例

    用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤及代码示例用pytho实现烟花特效的步骤...

    免疫等离子体算法pytho和matlab实现源码

    免疫等离子体算法的实现 免疫等离子体算法的实现-python-matlab实现源码 ...2、通过第三方代下载,而不是直接自己账号在csdn官方下载,博主不对下载的资源作任何保证,且不提供任何形式的技术支持和答疑!!!

    用Pytho写爬虫

    关于使用Python编写网络爬虫的知识点,可以分为以下几个部分: 1. Python语言基础:网络爬虫的编写是Python编程应用的一个方面,因此学习者需要掌握Python语言的基础知识,如基本语法、数据类型、控制结构、函数、...

    python 使用socket传输图片视频等文件的实现方式

    本文将详细介绍在Python环境下,如何使用socket传输包括图片和视频在内的各种文件。文章内容涵盖了服务器端和客户端的代码实现,以及文件处理的相关方法。 首先,介绍网络通信的基本概念。网络通信涉及到客户端...

    Machine Learning pytho

    4. 超参数调优:使用网格搜索、随机搜索或贝叶斯优化来寻找最优模型配置。 5. 模型解释:如 LIME 和 SHAP 方法,帮助理解黑盒模型的决策过程。 总的来说,Python 为机器学习提供了强大的工具和资源,使得数据科学家...

    python-3_pythondocs中文_python3.8.2文档_python3.8.2下载_python文档_Pytho

    这个文档集是Python 3.8.2的中文官方帮助文档,对于学习和使用Python 3.8.2的开发者来说,是一个非常宝贵的资源。 文档内容通常包括以下几个部分: 1. **语言参考**:这部分详细介绍了Python 3.8.2的语言语法,如...

Global site tag (gtag.js) - Google Analytics