質問編集履歴

2

補足の追加

2019/11/09 06:58

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -84,14 +84,46 @@
84
84
 
85
85
  ↓↓↓↓
86
86
 
87
- でデータ型をbinaryにしたところ直りました。
87
+ 保存時にbase64変更て解決しました。
88
88
 
89
89
 
90
90
 
91
91
  ### 追記
92
92
 
93
- phpmyadminivの長さを16にしたところ、Warning: openssl_decrypt(): IV passed is only 6 bytes long, cipher expects an IV of precisely 16 bytes, padding with \0 in /home/***/***/***/***/login.php on line **
93
+ login.phpの確認時に逆に入力れた文字暗号して確認する方法もやったのですが暗号化後のテキストが違うものなってまいまし
94
94
 
95
- とでました。
95
+ ```php
96
96
 
97
+ ~~~~略~~~~
98
+
97
- どのようにしたらいいでしょうか。
99
+ $ivs=array();
100
+
101
+ ~~~~略~~~~
102
+
103
+ $ivs[]=$row["iv"];
104
+
105
+ ~~~~略~~~~
106
+
107
+ for(省略){
108
+
109
+ ~~~~略~~~~
110
+
111
+ $key1='******';
112
+
113
+ $method='AES-128-CBC';
114
+
115
+ $iv=base64_decode($ivs[$i]);
116
+
117
+ $pass=openssl_encrypt($pass,$method,$key1,0,$iv);
118
+
119
+ // $dS=openssl_decrypt($passs[$i], $method, $key1,0,$iv);
120
+
121
+ if($passs[$i]===$pass){
122
+
123
+ echo "login";
124
+
125
+ }
126
+
127
+ ~~~~略~~~~
128
+
129
+ ```

1

補足の追加

2019/11/09 06:58

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -19,6 +19,8 @@
19
19
  $iv = openssl_random_pseudo_bytes($ivLength);
20
20
 
21
21
  $encString = openssl_encrypt($password,$method,$key1,0,$iv);
22
+
23
+ $iv=base64_encode($iv);
22
24
 
23
25
  ~~~~略~~~~
24
26
 
@@ -50,6 +52,8 @@
50
52
 
51
53
  $method='AES-128-CBC';
52
54
 
55
+ $iv=base64_decode($ivs[$i]);
56
+
53
57
  $dS=openssl_decrypt($passs[$i], $method, $key1,0,$ivs[$i]);
54
58
 
55
59
  if($dS===$pass){
@@ -74,4 +78,20 @@
74
78
 
75
79
  phpバージョンはPHP7.3.8です。
76
80
 
81
+
82
+
77
83
  phpmyadminからivを見ると少し文字化けしているように感じますがもともとでしょうか。
84
+
85
+ ↓↓↓↓
86
+
87
+ でデータ型をbinaryにしたところ直りました。
88
+
89
+
90
+
91
+ ### 追記
92
+
93
+ phpmyadminのivの長さを16にしたところ、Warning: openssl_decrypt(): IV passed is only 6 bytes long, cipher expects an IV of precisely 16 bytes, padding with \0 in /home/***/***/***/***/login.php on line **
94
+
95
+ とでました。
96
+
97
+ どのようにしたらいいでしょうか。