質問編集履歴
4
タイプミスを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
$result = base64_decode(openssl_decrypt($entStr, 'aes-128-ecb', 'CpioqMdt3wx4Wq', OPENSSL_ZERO_PADDING));
|
22
22
|
|
23
23
|
$plane = 'シブヤエキ';
|
24
|
-
$result_plane = base64_encode(openssl_encrypt($plane,
|
24
|
+
$result_plane = base64_encode(openssl_encrypt($plane, 'aes-128-ecb', 'CpioqMdt3wx4Wq', OPENSSL_ZERO_PADDING));
|
25
25
|
```
|
26
26
|
|
27
27
|
### 試したこと
|
3
タイプミスを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
```PHP
|
19
19
|
//シブヤエキ→復号化に成功
|
20
20
|
$entStr = 'TOkaThxNurC/DJ5BS8vN8J+1+/oZR6xk7V5K+JFLOVc=';
|
21
|
-
$result = base64_decode(openssl_decrypt($entStr,
|
21
|
+
$result = base64_decode(openssl_decrypt($entStr, 'aes-128-ecb', 'CpioqMdt3wx4Wq', OPENSSL_ZERO_PADDING));
|
22
22
|
|
23
23
|
$plane = 'シブヤエキ';
|
24
24
|
$result_plane = base64_encode(openssl_encrypt($plane, ’aes-128-ecb', 'CpioqMdt3wx4Wq', OPENSSL_ZERO_PADDING));
|
2
復号化には成功し、暗号化が想定通りにいきません。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
mcryptからopensslへの移行
|
1
|
+
mcryptからopensslへの移行 ■追記:復号化成功、暗号化失敗
|
test
CHANGED
@@ -5,60 +5,28 @@
|
|
5
5
|
### 前提
|
6
6
|
|
7
7
|
暗号化、復号化のアウトプットは、mcryptの時とおなじ結果にしたいです。
|
8
|
+
■追記:復号化には成功しまして、暗号化がうまくいきません。
|
8
9
|
|
9
10
|
### 発生している問題・エラーメッセージ
|
10
11
|
|
11
|
-
|
12
|
+
暗号化されている文字列を復号化することに成功したのですが、
|
12
|
-
|
13
|
+
これをもう一度暗号化しても、元の暗号化文字列と一致しません。
|
13
|
-
|
14
|
+
|
14
|
-
$iv = openssl_random_pseudo_bytes($ivLength); ←ここの実行でエラー
|
15
|
-
$options = 0;
|
16
|
-
$encrypted = openssl_encrypt('平文', $method, 'key文字列', $options, $iv);
|
17
|
-
```
|
18
|
-
上記をphpで実行すると、
|
19
|
-
```
|
20
|
-
"message": "openssl_random_pseudo_bytes(): Argument #1 ($length) must be greater than 0",
|
21
|
-
```
|
22
|
-
が出てしまいます。
|
23
|
-
openssl_cipher_iv_lengthの戻り値が"0"であることが原因で、1以上なら処理に成功するのですが、
|
24
|
-
メソッドは"aes-128-ecb"のまま変えたくないので、手づまりな状態です。
|
25
15
|
|
26
16
|
### 該当のソースコード
|
27
17
|
|
28
|
-
移行前の旧コードはこちらです。
|
29
18
|
```PHP
|
30
|
-
protected function encrypt($plain_text)
|
31
|
-
{
|
32
|
-
// Mcryptモジュールを開く
|
33
|
-
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
|
34
|
-
|
35
|
-
// 初期化ベクトルのサイズ
|
36
|
-
$iv_size = mcrypt_enc_get_iv_size($td);
|
37
|
-
|
38
|
-
srand(business_time());
|
39
|
-
//
|
19
|
+
//シブヤエキ→復号化に成功
|
40
|
-
|
20
|
+
$entStr = 'TOkaThxNurC/DJ5BS8vN8J+1+/oZR6xk7V5K+JFLOVc=';
|
41
|
-
|
42
|
-
|
21
|
+
$result = base64_decode(openssl_decrypt($entStr, ’aes-128-ecb', 'CpioqMdt3wx4Wq', OPENSSL_ZERO_PADDING));
|
22
|
+
|
43
|
-
|
23
|
+
$plane = 'シブヤエキ';
|
44
|
-
|
45
|
-
// 暗号化
|
46
|
-
// INFO: 空白文字を保持するためにbase64でエンコード
|
47
|
-
$e
|
24
|
+
$result_plane = base64_encode(openssl_encrypt($plane, ’aes-128-ecb', 'CpioqMdt3wx4Wq', OPENSSL_ZERO_PADDING));
|
48
|
-
|
49
|
-
// 終了処理
|
50
|
-
mcrypt_generic_deinit($td);
|
51
|
-
|
52
|
-
// Mcryptモジュールを閉じる
|
53
|
-
mcrypt_module_close($td);
|
54
|
-
|
55
|
-
return $encrypted_text;
|
56
|
-
}
|
57
25
|
```
|
58
26
|
|
59
27
|
### 試したこと
|
60
28
|
|
61
|
-
https://s
|
29
|
+
https://stackoverflow.com/questions/45218465/mcrypt-rijndael-128-to-openssl-aes-128-ecb-conversion
|
62
30
|
こちらを参考に実装を進めていますが、うまくいきません。
|
63
31
|
|
64
32
|
### 補足情報(FW/ツールのバージョンなど)
|
1
ソースコードを修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -9,13 +9,19 @@
|
|
9
9
|
### 発生している問題・エラーメッセージ
|
10
10
|
|
11
11
|
```
|
12
|
-
|
12
|
+
$method = 'aes-128-ecb';
|
13
|
+
$ivLength = openssl_cipher_iv_length($method);
|
14
|
+
$iv = openssl_random_pseudo_bytes($ivLength); ←ここの実行でエラー
|
15
|
+
$options = 0;
|
16
|
+
$encrypted = openssl_encrypt('平文', $method, 'key文字列', $options, $iv);
|
13
17
|
```
|
14
18
|
上記をphpで実行すると、
|
15
19
|
```
|
16
20
|
"message": "openssl_random_pseudo_bytes(): Argument #1 ($length) must be greater than 0",
|
17
21
|
```
|
18
22
|
が出てしまいます。
|
23
|
+
openssl_cipher_iv_lengthの戻り値が"0"であることが原因で、1以上なら処理に成功するのですが、
|
24
|
+
メソッドは"aes-128-ecb"のまま変えたくないので、手づまりな状態です。
|
19
25
|
|
20
26
|
### 該当のソースコード
|
21
27
|
|