pycrypto 相关问题

PyCrypto - Python Cryptography Toolkit是一个包含Python编程语言的各种加密模块的包。

如何修复python和php解密错误

这是我的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) } ** 请注意** 每个人都有自己的加密标准,因此您可以根据自己的要求调整代码。

回答 1 投票 0

AES-256-CBC 使用 cryptoBrowserify 返回 32 字节密码,但使用 PyCrypto 返回 48 字节密码

我一直在尝试加密和解密已发送到客户端/从客户端发送的数据。 在打字稿中,我有以下内容: 常量 AES_BLOCK_SIZE = 16; const ZERO_IV = Buffer.alloc(AES_BLOCK_...

回答 1 投票 0

导入错误:没有名为“Crypto”的模块

我正在使用 pycrypto。它在我的本地 Windows 机器上运行良好,但是当我将它移动到我的 python 盒子时,我在导入模块时遇到错误: 从 Crypto.Cipher 导入 ARC4 导入错误:否

回答 4 投票 0

pip install pycrypto 错误(子进程退出并出现错误)

我正在安装 pycrypto 来编码 AES 128 CBC 算法。 但我得到了这个错误(如图)。我应该怎么办? C:\python\python_InternalLock>pip 安装 pycrypto 收集pycrypto 正在下载

回答 1 投票 0

在 Windows 上通过 pip 使用 fastmath(gmp 或 mpir)构建 PyCrypto

我通过 pip 在 Windows 上安装了 PyCrypto,但我无法构建 Crypto.PublicKey._fastmath,因为找不到 GMP。 我知道 voidspace 有一个二进制版本,但我想构建

回答 1 投票 0

如何在Python中从RSA公钥中提取N和E?

我有一个 RSA 公钥,看起来像 -----开始公钥----- MIIBIDANBgkqhkiG9w0BAQEFAOCAQ0AMIIBCAKCAQEAvm0WYXg6mJc5GOWJ+5jk htbBOe0gyTlujRER++

回答 2 投票 0

我如何使用 pycryptodome 解密使用 AES 加密的密文?

我正在用python制作一个密码管理器,它使用用户设置的主密码来存储和加密密码(使用pycriptodome模块),但解密不起作用 这是功能...

回答 1 投票 0

在Python中解密Kamstrup WMBUS

我有一个卡姆鲁普 WMbus 水表,发送如下帧: 21442D2C529027581B168D2814900939201F0775C6452FBBAC155B46A546035219D51AB8 我正在尝试用Python 来解密它。 打破框架...

回答 1 投票 0

安装 pycryptodome 后缺少加密模块

我正在尝试创建一个 AES-256 加密程序,但 python 说未安装 pycryptodome 我已经尝试安装 pycryptodomex 但仍然无法工作,我尝试完全重新安装

回答 1 投票 0

Python Jwt 错误“找不到算法”和另一个错误“您是否安装了加密组件”

我正在使用 python jwt 使用算法 RS512 获取 jwt 令牌。 但我不断收到找不到算法的错误。 另外,我收到一条错误消息,指出未找到加密组件。我已经安装了

回答 1 投票 0

使用 Node.js AES CTR 加密并使用 PyCrypto 解密

好吧,基本上我在使用 Python 解密时遇到了问题。 我已经成功地使用 Node.js 加密/解密数据 - 使用“aes-128-ctr”,PyCrypto 也是如此,但是当我尝试使用 No 加密时...

回答 2 投票 0

OpenSSL 在 Python 中用于部分链的命令

我正在尝试在Python中使用OpenSSL模块进行证书验证。 我的 windows openssl 命令为: openssl verify -partial_chain -CAfile Intermediate.pem UserCert.pem 请您建议...

回答 1 投票 0

使用 pyca/cryptography 的 DES 密码 (PBEWithMD5AndDES)

为了支持一些遗留应用程序,我需要在Python中实现PBEWithMD5AndDES(RFC2898第6.1节)。我知道这是不安全的,已被弃用,不应再使用。但这是可悲的

回答 2 投票 0

如何在 Python 中从 JavaScript CryptoJS.AES.encrypt(password, passphrase) 解密密码

我有一个密码,该密码是通过JavaScript加密的 var 密码 = '样本' var passphrase ='sample_passphrase' CryptoJS.AES.加密(密码,密码) 然后我尝试解密密码...

回答 1 投票 0

找不到适用于 windows x64 的 PyCrypto 2.6 预编译版本

有谁知道在哪里可以找到适用于 Windows x64 的 pycrypto 2.6.1 预编译版本? 我找到了 http://www.voidspace.org.uk/python/modules.shtml#pycrypto 但我无法下载该文件。丽...

回答 2 投票 0

导入错误:./cryptography/src/cryptography/hazmat/bindings/_rust.abi3.so:未定义符号:使用密码学时的 EVP_PKEY_get_id

我正在开发一个使用密码学和 PyOpenSSL 的 Python 项目。我基于Python 3.10为项目的所有依赖项创建了一个虚拟环境。因为我需要更多 OpenSSL

回答 1 投票 0

我在 VS Code 中安装 simplecrypt 时遇到此错误

PS E:\ADV-C186-Student> pip install simple-crypt 默认为用户安装,因为普通站点包不可写 收集简单的地穴 使用缓存的 simple_crypt-4.1.7-py3-none-...

回答 1 投票 0

在 Windows 上使用 pycrypto 时如何修复“ImportError:无法从 Crypto.Cipher 导入名称 _AES”?

我在 Crypto (Python27\Lib\Crypto\Cipher\AES) 内的 Cipher 模块内有 AES。 当我尝试做的时候 从 Crypto.Cipher 导入 AES 我收到以下错误: 回溯(最近一次调用最后一次): 弗...

回答 3 投票 0

Python 中使用 C# 加密的错误解密

在C#中加密一个字符串,在Python中解密失败,显然问题出在IV上 代码输入pt C# 公共字符串加密(字符串明文) { // 转换加密的 clave

回答 1 投票 0

Volatility3:属性错误:在库中找不到函数/符号“ARC4_stream_init”

我正在尝试使用volatility3的hashdump.Hashdump模块从内存转储中获取哈希值,但我一直遇到此错误: 属性错误:在 li 中找不到函数/符号“ARC4_stream_init”...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.