PyCrypto - Python Cryptography Toolkit是一个包含Python编程语言的各种加密模块的包。
这是我的php函数 这是我的 php 函数 <?function encrypt_decrypt($action, $string) { $output = false; $encrypt_method = "AES-256-CBC"; $secret_key = '3752395n39572395m82219vc5b13'; $secret_iv = '67b349vm13408vm2035983v6n2390'; $key = hash('sha256', $secret_key); $iv = substr(hash('sha256', $secret_iv), 0, 16); if ($action == 'encrypt') { $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv); $output = base64_encode($output); } else if ($action == 'decrypt') { $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv); } return $output; } 这是我的Python函数 def decrypt(encrypted_string, secret_key, secret_iv): # Hash key and IV key = hashlib.sha256(secret_key.encode()).digest() # Create binary key iv = hashlib.sha256(secret_iv.encode()).digest()[:16] # First 16 bytes for IV # Decode the Base64 encoded string decoded_data = base64.b64decode(encrypted_string) # Create a cipher object for decryption cipher = AES.new(key, AES.MODE_CBC, iv) # Decrypt the output decrypted_padded = cipher.decrypt(decoded_data) # Unpad the output (PKCS7 padding) decrypted = unpad(decrypted_padded, AES.block_size) return decrypted.decode('utf-8') 当我使用 php 加密字符串时,无法使用 python 解密,出现此错误 Decryption failed: Data must be padded to 16 byte boundary in CBC mode 我该如何解决此问题?我想使用 php 加密并使用 python 解密。 您遇到的错误消息Decryption failed: Data must be padded to 16 byte boundary in CBC mode表明 PHP 和 Python 之间处理加密数据的方式存在问题。这通常发生在加密/解密过程中,例如密钥或 IV 处理使用不当、填充不正确或数据编码不匹配。 你可以做的是这样的: <?php function encrypt_decrypt($action,$string) { $output = false; $encrypted_method = "AES-256-CBC"; $secret_key = 'your-secret-key'; $secret_iv = 'your-secret-iv'; $key = hash('sha256', $secret_key, true); $iv = substr(hash('sha256', $secret_iv,true),0,16); if($action = 'encrypt') { $encrypted = openssl_encrypt($string,$encrypt_method, $key,OPENSSL_RAW_DATA, $iv); $output = base64_encode($encrypted); } else if ($action = 'decrypt') { $decoded = base64_decode($string); $output = openssl_decrypt($decoded, $encrypt_method, $key, OPENSSL_RAW_DATA, $iv); } return $output; } // Example use: $string = 'foo-bar-string'; $encrypted = encrypt_decrypt('encrypt',$string); // encrypted holds the encrypted string 解密: $decrypted = encrypt_decrypt('decrypt', $string); // decrypted holds the decrypted string which can be then converted to json or array. Python: import hashlib, base64 from Crypto.Cipher import AES from Crypto.Util.Padding import unpad def decrypt(encrypted_string, secret_key, secret_iv): key = hashlib.sha256(secret_key.encode()).digest() # 32 bytes iv = hashlib.sha256(secret_iv.encode()).digest()[:16] # 16 bytes try: decoded_data = base64.b64decode(encrypted_string) except Exception as e: raise ValueError(f"Base64 decoding failed: {e}") cipher = AES.new(key, AES.MODE_CBC, iv) decrypted_padded = cipher.decrypt(decoded_data) try: decrypted = unpad(decrypted_padded, AES.block_size) except ValueError as e: raise ValueError(f"Unpadding failed: {e}") return decrypted.decode('utf-8') # Example usage if __name__ == "__main__": encrypted = "VtA3Q8O4M+wq3kQ1MH2L0w==" # Replace with your actual encrypted string from PHP secret_key = 'your-secret-key-here' // ensure both php and python have same values secret_iv = 'your-secret-iv-here' // ensure both php and python have same values try: decrypted = decrypt(encrypted, secret_key, secret_iv) print("Decrypted:", decrypted) except Exception as e: print("Decryption error:", e) 对于 javascript,我想创建一个 aes.js 文件来加密或解密: doEncrypt(plainText) { const encrypted = CryptoJS.AES.encrypt( plainText, this.times, { iv: CryptoJS.enc.Latin1.parse(this.iv), mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) return encrypted.ciphertext.toString(CryptoJS.enc.Base64) } doDecrypt(cipherText) { // this.generateKey(this.salt, this.passPhrase) const decrypted = CryptoJS.AES.decrypt( cipherText, this.times, { iv: CryptoJS.enc.Latin1.parse(this.iv), mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) return decrypted.toString(CryptoJS.enc.Utf8) } ** 请注意** 每个人都有自己的加密标准,因此您可以根据自己的要求调整代码。
AES-256-CBC 使用 cryptoBrowserify 返回 32 字节密码,但使用 PyCrypto 返回 48 字节密码
我一直在尝试加密和解密已发送到客户端/从客户端发送的数据。 在打字稿中,我有以下内容: 常量 AES_BLOCK_SIZE = 16; const ZERO_IV = Buffer.alloc(AES_BLOCK_...
我正在使用 pycrypto。它在我的本地 Windows 机器上运行良好,但是当我将它移动到我的 python 盒子时,我在导入模块时遇到错误: 从 Crypto.Cipher 导入 ARC4 导入错误:否
pip install pycrypto 错误(子进程退出并出现错误)
我正在安装 pycrypto 来编码 AES 128 CBC 算法。 但我得到了这个错误(如图)。我应该怎么办? C:\python\python_InternalLock>pip 安装 pycrypto 收集pycrypto 正在下载
在 Windows 上通过 pip 使用 fastmath(gmp 或 mpir)构建 PyCrypto
我通过 pip 在 Windows 上安装了 PyCrypto,但我无法构建 Crypto.PublicKey._fastmath,因为找不到 GMP。 我知道 voidspace 有一个二进制版本,但我想构建
我有一个 RSA 公钥,看起来像 -----开始公钥----- MIIBIDANBgkqhkiG9w0BAQEFAOCAQ0AMIIBCAKCAQEAvm0WYXg6mJc5GOWJ+5jk htbBOe0gyTlujRER++
我如何使用 pycryptodome 解密使用 AES 加密的密文?
我正在用python制作一个密码管理器,它使用用户设置的主密码来存储和加密密码(使用pycriptodome模块),但解密不起作用 这是功能...
我有一个卡姆鲁普 WMbus 水表,发送如下帧: 21442D2C529027581B168D2814900939201F0775C6452FBBAC155B46A546035219D51AB8 我正在尝试用Python 来解密它。 打破框架...
我正在尝试创建一个 AES-256 加密程序,但 python 说未安装 pycryptodome 我已经尝试安装 pycryptodomex 但仍然无法工作,我尝试完全重新安装
Python Jwt 错误“找不到算法”和另一个错误“您是否安装了加密组件”
我正在使用 python jwt 使用算法 RS512 获取 jwt 令牌。 但我不断收到找不到算法的错误。 另外,我收到一条错误消息,指出未找到加密组件。我已经安装了
使用 Node.js AES CTR 加密并使用 PyCrypto 解密
好吧,基本上我在使用 Python 解密时遇到了问题。 我已经成功地使用 Node.js 加密/解密数据 - 使用“aes-128-ctr”,PyCrypto 也是如此,但是当我尝试使用 No 加密时...
我正在尝试在Python中使用OpenSSL模块进行证书验证。 我的 windows openssl 命令为: openssl verify -partial_chain -CAfile Intermediate.pem UserCert.pem 请您建议...
使用 pyca/cryptography 的 DES 密码 (PBEWithMD5AndDES)
为了支持一些遗留应用程序,我需要在Python中实现PBEWithMD5AndDES(RFC2898第6.1节)。我知道这是不安全的,已被弃用,不应再使用。但这是可悲的
如何在 Python 中从 JavaScript CryptoJS.AES.encrypt(password, passphrase) 解密密码
我有一个密码,该密码是通过JavaScript加密的 var 密码 = '样本' var passphrase ='sample_passphrase' CryptoJS.AES.加密(密码,密码) 然后我尝试解密密码...
找不到适用于 windows x64 的 PyCrypto 2.6 预编译版本
有谁知道在哪里可以找到适用于 Windows x64 的 pycrypto 2.6.1 预编译版本? 我找到了 http://www.voidspace.org.uk/python/modules.shtml#pycrypto 但我无法下载该文件。丽...
导入错误:./cryptography/src/cryptography/hazmat/bindings/_rust.abi3.so:未定义符号:使用密码学时的 EVP_PKEY_get_id
我正在开发一个使用密码学和 PyOpenSSL 的 Python 项目。我基于Python 3.10为项目的所有依赖项创建了一个虚拟环境。因为我需要更多 OpenSSL
我在 VS Code 中安装 simplecrypt 时遇到此错误
PS E:\ADV-C186-Student> pip install simple-crypt 默认为用户安装,因为普通站点包不可写 收集简单的地穴 使用缓存的 simple_crypt-4.1.7-py3-none-...
在 Windows 上使用 pycrypto 时如何修复“ImportError:无法从 Crypto.Cipher 导入名称 _AES”?
我在 Crypto (Python27\Lib\Crypto\Cipher\AES) 内的 Cipher 模块内有 AES。 当我尝试做的时候 从 Crypto.Cipher 导入 AES 我收到以下错误: 回溯(最近一次调用最后一次): 弗...
在C#中加密一个字符串,在Python中解密失败,显然问题出在IV上 代码输入pt C# 公共字符串加密(字符串明文) { // 转换加密的 clave
Volatility3:属性错误:在库中找不到函数/符号“ARC4_stream_init”
我正在尝试使用volatility3的hashdump.Hashdump模块从内存转储中获取哈希值,但我一直遇到此错误: 属性错误:在 li 中找不到函数/符号“ARC4_stream_init”...