質問編集履歴
6
PHPでGETで送られてくる文字列の空白を+に置き換えるようにしました。
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($
|
115
|
+
var_dump(base64_decode($replaced ));
|
114
116
|
$key = file_get_contents('秘密鍵のパス');
|
115
|
-
openssl_private_decrypt(base64_decode($
|
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) "
|
128
|
-
※var_dump(
|
129
|
-
string(
|
130
|
-
|
131
|
-
�
|
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) "O�K"�������l�?x�1Jh��_�;��&
|
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>3
|
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>3
|
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
|
-
※n
|
144
|
+
※print json_encode($array);
|
140
145
|
{"id":null,"password":null}
|
141
146
|
```
|
142
147
|
### 該当のソースコード(POSTを使う方法)
|
5
謝辞の編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -72,8 +72,8 @@
|
|
72
72
|
|
73
73
|
**ここから新しく追加**
|
74
74
|
### 謝辞
|
75
|
-
|
75
|
+
この質問と酷似した内容の質問を新たに投稿してしまいました。すみませんでした。
|
76
|
-
なので、この質問に編集で追記するという形で質問の回答を受け付けたいと思います。すみませんでした。
|
76
|
+
なので、この質問に編集で追記するという形で新たにやったことについての質問の回答を受け付けたいと思います。すみませんでした。
|
77
77
|
|
78
78
|
### 該当のソースコード(GETを使う方法)
|
79
79
|
送信側(Python)
|
4
同じ内容の質問をしてすみませんでした。この質問に追記で新しくやったことについて言及させていただきます。
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
下準備
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
半角スペースを入れた
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
初心者マークを付けました
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
|
ということがしたいです。
|