質問編集履歴

6

PHPでGETで送られてくる文字列の空白を+に置き換えるようにしました。

2023/02/04 02:07

投稿

saitou_san
saitou_san

スコア32

test CHANGED
File without changes
test CHANGED
@@ -110,9 +110,11 @@
110
110
  //省略
111
111
  if(isset($_GET["username"])){
112
112
  var_dump($_GET["username"]);
113
+ $replaced = str_replace(' ', '+', $_GET['username']);
114
+ var_dump($replaced);
113
- var_dump(base64_decode($_GET['username']));
115
+ var_dump(base64_decode($replaced ));
114
116
  $key = file_get_contents('秘密鍵のパス');
115
- openssl_private_decrypt(base64_decode($_GET['username']), $username, $key);
117
+ openssl_private_decrypt(base64_decode($replaced ), $username, $key);
116
118
  var_dump($username);
117
119
  //省略
118
120
  $array = [ 'id'=>$data['id'], 'password'=>$data['password'] ];
@@ -120,23 +122,26 @@
120
122
  }
121
123
  ```
122
124
  受信側エラー(PHP)
125
+ URL:http://192.168.11.69/api/get_id_password.php?username=T55LIv6zH7GSG6iYzxJszz94kTFKaKGCX/A7HoiGJg0HS7qv6uLK4t06iMdrNdQ9wNr/SkYo+Fkn7j8hrkMFqlZ7FbqeKHJTJj92EY+bjC5T+gcW9DmOl2DYNa11RpZfnKuMsssELhaTqPCGECSBf0u/zfWwJWbql+s+uzhJofTD+VSo2ekmX5Z6saTKUxejFaxkMJ7hvNmZlg1zC7aFPCCTaOFWPLmixdBies5+y4egtBqvE/ANDC9uN+7oojVi2fAs4GiASQgES6QsJSBdWXffGPpG+Vdo7CrLnidBSXlJkPAHbq/W8OoRbjpHgH0B/TfE7jeC3Rjr7bCA1VJSWQ==
123
126
  ※1ファイルに記録したURLを直接ブラウザに貼り付けました。
124
127
  ※2ver_dump()の結果も含まれています
125
128
  ```
126
129
  ※var_dump($_GET["username"]);
127
- string(344) "A48fRNXcLFi5u1vcCo3gk2h IyiYqyA6dk0gA93IbCRqB2IKR2BLIiXyJXCzJeNOCysCrd NB4OgAbpAFxTcZayebBR2tPIW7XpEgNwwaAs/9j09cSk8yZeJZ/Orixmxup2TycedAsz4LjAk/dMlUCl3jxbtH/Asx3i5Zxkt0GbPf6le5dyUeLhWQ/5UWwN5K/YmxEOHJb7GpInMS9zXqt4Wbpb6ly0xmp4fm1mfCKBIPWMOwXj Eq544KoIGwbx r6Z3Uah5a8gJ3418WtSw7BoOv8COJ/NgpMYrraIwkgBBPsDIDbOq1QteWGI7plHqjN7al6H/F9raVjV9GrRtA=="
128
- ※var_dump(base64_decode($_GET['username']));
129
- string(253) "�D��,X��[�
130
- ���hH�&*���H��r �؂��ȉ|�\,�xӂ���t�x:��qM�Z���GkO!nפH
131
- ���c��̙x�:�����<y�,ς�O�2U�x�n���w��q��l����]�G��d?�E�7��blD8r[�jH�Ľ�z��f�o�r����������0��J�エ lƾ��F�� '~5�kRðh:8͂����H� 6ΫT-ya��G�3{j^��_kiX��jѴ"
130
+ string(344) "T55LIv6zH7GSG6iYzxJszz94kTFKaKGCX/A7HoiGJg0HS7qv6uLK4t06iMdrNdQ9wNr/SkYo Fkn7j8hrkMFqlZ7FbqeKHJTJj92EY bjC5T gcW9DmOl2DYNa11RpZfnKuMsssELhaTqPCGECSBf0u/zfWwJWbql s uzhJofTD VSo2ekmX5Z6saTKUxejFaxkMJ7hvNmZlg1zC7aFPCCTaOFWPLmixdBies5 y4egtBqvE/ANDC9uN 7oojVi2fAs4GiASQgES6QsJSBdWXffGPpG Vdo7CrLnidBSXlJkPAHbq/W8OoRbjpHgH0B/TfE7jeC3Rjr7bCA1VJSWQ=="
131
+ ※var_dump($replaced);
132
+ string(344) "T55LIv6zH7GSG6iYzxJszz94kTFKaKGCX/A7HoiGJg0HS7qv6uLK4t06iMdrNdQ9wNr/SkYo+Fkn7j8hrkMFqlZ7FbqeKHJTJj92EY+bjC5T+gcW9DmOl2DYNa11RpZfnKuMsssELhaTqPCGECSBf0u/zfWwJWbql+s+uzhJofTD+VSo2ekmX5Z6saTKUxejFaxkMJ7hvNmZlg1zC7aFPCCTaOFWPLmixdBies5+y4egtBqvE/ANDC9uN+7oojVi2fAs4GiASQgES6QsJSBdWXffGPpG+Vdo7CrLnidBSXlJkPAHbq/W8OoRbjpHgH0B/TfE7jeC3Rjr7bCA1VJSWQ=="
133
+ ※var_dump(base64_decode($replaced ));
134
+ string(256) "OK"�������l�?x1Jh��_;��&
135
+ K�������:��k5�=���JF(�Y'�?!�C�V{��(rS&?v���.S��9��`�5�uF�_�����.����$�K����%f��>�8I����T���&_�z���S��d0��ٙ�
136
+ s ��< �h�V<����bz�~ˇ����
137
+ /n7��5b��,�h�IK�,% ]Yw��F�Wh�*˞'AIyI��n����n:G�}�7��7�������RRY"
132
138
  ※var_dump($username);
133
139
  NULL
134
- ※エラー出力
135
140
  <br />
136
- <b>Notice</b>: Trying to access array offset on value of type bool in <b>C:\xampp\htdocs\api\get_id_password.php</b> on line <b>36</b><br />
141
+ <b>Notice</b>: Trying to access array offset on value of type bool in <b>C:\xampp\htdocs\api\get_id_password.php</b> on line <b>39</b><br />
137
142
  <br />
138
- <b>Notice</b>: Trying to access array offset on value of type bool in <b>C:\xampp\htdocs\api\get_id_password.php</b> on line <b>36</b><br />
143
+ <b>Notice</b>: Trying to access array offset on value of type bool in <b>C:\xampp\htdocs\api\get_id_password.php</b> on line <b>39</b><br />
139
- ※nullが返される
144
+ print json_encode($array);
140
145
  {"id":null,"password":null}
141
146
  ```
142
147
  ### 該当のソースコード(POSTを使う方法)

5

謝辞の編集

2023/02/03 12:32

投稿

saitou_san
saitou_san

スコア32

test CHANGED
File without changes
test CHANGED
@@ -72,8 +72,8 @@
72
72
 
73
73
  **ここから新しく追加**
74
74
  ### 謝辞
75
- コメントと回答にて、GETで送る方法とPOSTで送る方法を勧められたのでこの質問と酷似した内容の質問を新たに投稿しててしまいました。すみませんでした。
75
+ この質問と酷似した内容の質問を新たに投稿してしまいました。すみませんでした。
76
- なので、この質問に編集で追記するという形で質問の回答を受け付けたいと思います。すみませんでした。
76
+ なので、この質問に編集で追記するという形で新たにやったことについての質問の回答を受け付けたいと思います。すみませんでした。
77
77
 
78
78
  ### 該当のソースコード(GETを使う方法)
79
79
  送信側(Python)

4

同じ内容の質問をしてすみませんでした。この質問に追記で新しくやったことについて言及させていただきます。

2023/02/03 11:07

投稿

saitou_san
saitou_san

スコア32

test CHANGED
File without changes
test CHANGED
@@ -71,4 +71,125 @@
71
71
  Python3.10.9
72
72
 
73
73
  **ここから新しく追加**
74
+ ### 謝辞
75
+ コメントと回答にて、GETで送る方法とPOSTで送る方法を勧められたのでこの質問と酷似した内容の質問を新たに投稿して試してしまいました。すみませんでした。
76
+ なので、この質問に編集で追記するという形で質問の回答を受け付けたいと思います。すみませんでした。
74
77
 
78
+ ### 該当のソースコード(GETを使う方法)
79
+ 送信側(Python)
80
+ ```python
81
+ #省略
82
+ with open('public.key', 'rb') as f:
83
+ public_key = f.read() #.keyファイル読み取り
84
+ key = RSA.importKey(public_key)
85
+ cipher_rsa = PKCS1_OAEP.new(key) #公開鍵の読み込み
86
+ c_username = cipher_rsa.encrypt(input_username.encode()) #暗号化されたバイナリデータ
87
+ base64_username = base64.b64encode(c_username)
88
+ str_username = base64_username.decode('utf-8')
89
+
90
+ url = "http://192.168.11.69/api/get_id_password.php?username="+str_username
91
+ url_text = open('url.txt', 'w') #手動でアクセスできるようにURLを保存
92
+ url_text.write(url)
93
+ url_text.close()
94
+ json_data = requests.get(url)
95
+ print(json_data)
96
+ if str(json_data) == '<Response [200]>':
97
+ id = json_data.json()['id']
98
+ ```
99
+ 送信側エラー(Python)
100
+ ```
101
+ on_press: app.root.login.check()
102
+ File "C:\tenko\main.py", line 49, in check
103
+ id = json_data.json()['id']
104
+ File "C:\Users\Owner\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\models.py", line 975, in json
105
+ raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
106
+ requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
107
+ ```
108
+ 受信側(PHP)
109
+ ```PHP
110
+ //省略
111
+ if(isset($_GET["username"])){
112
+ var_dump($_GET["username"]);
113
+ var_dump(base64_decode($_GET['username']));
114
+ $key = file_get_contents('秘密鍵のパス');
115
+ openssl_private_decrypt(base64_decode($_GET['username']), $username, $key);
116
+ var_dump($username);
117
+ //省略
118
+ $array = [ 'id'=>$data['id'], 'password'=>$data['password'] ];
119
+ print json_encode($array);
120
+ }
121
+ ```
122
+ 受信側エラー(PHP)
123
+ ※1ファイルに記録したURLを直接ブラウザに貼り付けました。
124
+ ※2ver_dump()の結果も含まれています
125
+ ```
126
+ ※var_dump($_GET["username"]);
127
+ string(344) "A48fRNXcLFi5u1vcCo3gk2h IyiYqyA6dk0gA93IbCRqB2IKR2BLIiXyJXCzJeNOCysCrd NB4OgAbpAFxTcZayebBR2tPIW7XpEgNwwaAs/9j09cSk8yZeJZ/Orixmxup2TycedAsz4LjAk/dMlUCl3jxbtH/Asx3i5Zxkt0GbPf6le5dyUeLhWQ/5UWwN5K/YmxEOHJb7GpInMS9zXqt4Wbpb6ly0xmp4fm1mfCKBIPWMOwXj Eq544KoIGwbx r6Z3Uah5a8gJ3418WtSw7BoOv8COJ/NgpMYrraIwkgBBPsDIDbOq1QteWGI7plHqjN7al6H/F9raVjV9GrRtA=="
128
+ ※var_dump(base64_decode($_GET['username']));
129
+ string(253) "�D��,X��[�
130
+ ���hH�&*���H��r �؂��ȉ|�\,�xӂ���t�x:��qM�Z���GkO!nפH
131
+ ����c���̙x�:�����<�y�,ς�O�2U�x�n���w��q��l����]�G��d?�E�7��blD8r[�jH�Ľ�z��f�o�r����������0��J�エ lƾ��F�� '~5�kRðh:�8�͂�����H� 6ΫT-ya��G�3{j^��_kiX��jѴ"
132
+ ※var_dump($username);
133
+ NULL
134
+ ※エラー出力
135
+ <br />
136
+ <b>Notice</b>: Trying to access array offset on value of type bool in <b>C:\xampp\htdocs\api\get_id_password.php</b> on line <b>36</b><br />
137
+ <br />
138
+ <b>Notice</b>: Trying to access array offset on value of type bool in <b>C:\xampp\htdocs\api\get_id_password.php</b> on line <b>36</b><br />
139
+ ※nullが返される
140
+ {"id":null,"password":null}
141
+ ```
142
+ ### 該当のソースコード(POSTを使う方法)
143
+ 送信側(python)
144
+ ```python
145
+ with open('public.key', 'rb') as f:
146
+ public_key = f.read() #.keyファイル読み取り
147
+ key = RSA.importKey(public_key)
148
+ cipher_rsa = PKCS1_OAEP.new(key) #公開鍵の読み込み
149
+ c_username = cipher_rsa.encrypt(input_username.encode()) #暗号化されたバイナリデータ
150
+ base64_username = base64.b64encode(c_username)
151
+ payload = {'username': base64_username}
152
+ #str_username = base64_username.decode('utf-8')
153
+
154
+ url = "http://192.168.11.69/api/get_id_password.php"
155
+ url_text = open('url.txt', 'w')
156
+ url_text.write(url)
157
+ url_text.close()
158
+ json_data = requests.post(url,payload)
159
+ print(json_data)
160
+ if str(json_data) == '<Response [200]>':
161
+ id = json_data.json()['id']
162
+ ```
163
+ 送信側エラー(python)
164
+ ```
165
+ File "C:\tenko\main.py", line 50, in check
166
+ id = json_data.json()['id']
167
+ File "C:\Users\Owner\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\models.py", line 975, in json
168
+ raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
169
+ requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
170
+ ```
171
+ 受信側(PHP)
172
+ ```PHP
173
+ <?php
174
+ header('Content-Type: application/json; charset=UTF-8');
175
+ $request_body = file_get_contents('php://input');
176
+ $json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
177
+ $data = json_decode($request_body,true);
178
+ //省略
179
+
180
+ if(isset($data["username"])){
181
+
182
+ $key = file_get_contents('秘密鍵のパス');
183
+ openssl_private_decrypt(base64_decode($data['username']), $username, $key);
184
+
185
+ //省略
186
+ $array = [ 'id'=>$data['id'], 'password'=>$data['password'] ];
187
+ print json_encode($array);
188
+ }
189
+ ?>
190
+ ```
191
+ POSTの時は、PHP側のエラーを見ることができませんでした。(それをする技術がない)
192
+
193
+ **コードが間違っている箇所がございましたら、ばんばん指摘してください。**
194
+
195
+

3

下準備

2023/02/03 10:56

投稿

saitou_san
saitou_san

スコア32

test CHANGED
File without changes
test CHANGED
@@ -70,3 +70,5 @@
70
70
  PHP7.4.26
71
71
  Python3.10.9
72
72
 
73
+ **ここから新しく追加**
74
+

2

半角スペースを入れた

2023/02/03 06:40

投稿

saitou_san
saitou_san

スコア32

test CHANGED
File without changes
test CHANGED
@@ -61,7 +61,7 @@
61
61
  requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
62
62
  ```
63
63
 
64
- ###教えていただきたいこと
64
+ ### 教えていただきたいこと
65
65
  GETでもPOSTでもペイロードでも、どんな方法でもいいのでbytes型のデータをAPIに送る方法を教えてください!!!
66
66
 
67
67
 

1

初心者マークを付けました

2023/02/03 06:39

投稿

saitou_san
saitou_san

スコア32

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  pythonで作っているスマホアプリから、公開鍵で暗号化されたユーザネーム(bytes型)をbase64でエンコード
4
4
 
5
- PHPで作った自作APIへ送る
5
+ bytes型のデータをPHPで作った自作APIへ送る
6
6
 
7
7
  API側で送られてきたデータを秘密鍵で復号
8
8
  ということがしたいです。