簡體   English   中英

Python - 從 php openssl_encrypt 解密

[英]Python - Decrypt from php openssl_encrypt

問題,我想知道是否有人可以指出我正確的方向,因為我一直在撓頭。 是否可以在 python 中構建一個解密函數來解密使用 php 使用以下 128-CTR 方法加密的內容?

php 端使用以下編碼

$enc_method = 'AES-128-CTR';
$enc_iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($enc_method));
$crypted_token = openssl_encrypt($token, $enc_method, $enc_key, 0, $enc_iv) . "::" . bin2hex($enc_iv);

令牌是加密數據的地方。

我會發布一堆我的試用代碼,但是太多了,而且我不是加密方面的超級專家(php 方面是在舊版本上構建的)。 我想如果我能以某種方式向后兼容,我可能最終會在 python 中將它重建為更新的標准。 只是想知道是否有人有任何關於我可能忽略的 otpics 的鏈接,或者關於這個主題的一些好書建議,我可以閱讀更多內容以更好地掌握它。 提前致謝。

這是一個使用pyca/cryptography的工作示例。

import os
import base64
import binascii
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend

crypted_token = "BuPVjqUgeGtXRT7OVsbjGZWRzZ3TEhZ3dSU4nyCtlA==::c6eda9c511d197d834cee4846fa726c3"
(ct, iv) = crypted_token.split("::", 1)
ct = base64.b64decode(ct)
iv = binascii.unhexlify(iv)

key = base64.b64decode("OqrcoKcA46oP6VpsMv14Kg==")

cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=default_backend())

#encryptor = cipher.encryptor()
#ct = encryptor.update(message) + encryptor.finalize()

decryptor = cipher.decryptor()
plain = decryptor.update(ct) + decryptor.finalize()

print("Decrypted = {}", plain)

如果您開始使用不同的庫並且想要使用,請隨時發布示例代碼,我們可以幫助它工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM