pythonから自作APIへ暗号化されたバイナリデータを送りたい

実現したいこと

pythonで作っているスマホアプリから、公開鍵で暗号化されたユーザネーム(bytes型)をbase64でエンコード

bytes型のデータをPHPで作った自作APIへ送る

API側で送られてきたデータを秘密鍵で復号
ということがしたいです。

これまでの取り組み

pythonでurlに暗号化・base64でのエンコードがされていないユーザネーム(str型)をURL+"?username=ユーザネーム"のようにして送り、
サーバ側でGET['username']で取り出し、処理することに成功しました。

python

1 url = "http://192.168.11.69/api/get_id_password.php?username="+input_username 2 json_data = requests.get(url)

しかし、送るユーザネームを暗号化・base64でエンコードした場合、URL(str型)にユーザネーム(bytes型)を連結することができず、渋々str型に変換したらPHP側でbytes型に戻せなくて困っています。

そこで、アプリ側(python)でpayloadを設定してPHPで取り出せるようにしようとしていますが上手くいきません。

該当のソースコード

アプリ側(python)でpayloadを設定してPHPで取り出せるようにしようとしています。

python

1#省略2#公開鍵での暗号に使用3from Crypto.PublicKey import RSA 4from Crypto.Cipher import PKCS1_OAEP 5import base64 6#省略7 with open('public.key', 'rb') as f:8 public_key = f.read() #.keyファイル読み取り9 key = RSA.importKey(public_key)10 cipher_rsa = PKCS1_OAEP.new(key) #公開鍵の読み込み11 c_username = cipher_rsa.encrypt(input_username.encode()) #暗号化されたバイナリデータ12 base64_username = base64.b64encode(c_username)13 14 url = "http://192.168.11.69/api/get_id_password.php"15 payload = {"username":base64_username}16 json_data = requests.get(url,payload)17 if str(json_data) == '<Response [200]>':18 id = json_data.json()['id']19 hashed_password = json_data.json()['password']20 #省略

PHP

1 $request_body = file_get_contents('php://input');2 $data = json_decode($request_body);3 if(isset($data["username"])){4 $key = file_get_contents('秘密鍵の場所');5 openssl_private_decrypt(base64_decode($data['username']), $username, $key);6 //以後省略

python側のエラー

File "C:\tenko\tenko.kv", line 54, in <module> on_press: app.root.login.check() File "C:\tenko\main.py", line 45, in check id = json_data.json()['id'] File "C:\Users\Owner\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\models.py", line 975, in json raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

教えていただきたいこと

GETでもPOSTでもペイロードでも、どんな方法でもいいのでbytes型のデータをAPIに送る方法を教えてください!!!

補足情報(FW/ツールのバージョンなど)

PHP7.4.26
Python3.10.9

コメントを投稿

0 コメント