0 レビュー
1 回答
Python-phpopenssl_encryptから復号化
質問、私は頭をかいていたので、誰かが私をこれについて正しい方向に向けることができるかどうか疑問に思いました。以下の128-CTRのメソッドでphpを使用して暗号化されたものを復号化するためにPythonで復号化関数を構築することは可能ですか?
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へのリンクを持っているかどうか、私が見落としているかもしれないか、または私がそれをより良くするためにもっと読むことができる主題に関するいくつかの良い本の提案があるかどうか疑問に思っていました。前もって感謝します。
わからない
0
レビュー
答え :
解決:
これは、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)
使用し始めた別のライブラリで使用したいものがある場合は、サンプルコードを投稿してください。私たちがそれを機能させるお手伝いをします。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。