質問編集履歴

4

タイプミスを修正

2023/06/07 12:29

投稿

ddddddddd
ddddddddd

スコア1

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, aes-128-ecb', 'CpioqMdt3wx4Wq', OPENSSL_ZERO_PADDING));
24
+ $result_plane = base64_encode(openssl_encrypt($plane, 'aes-128-ecb', 'CpioqMdt3wx4Wq', OPENSSL_ZERO_PADDING));
25
25
  ```
26
26
 
27
27
  ### 試したこと

3

タイプミスを修正

2023/06/07 12:24

投稿

ddddddddd
ddddddddd

スコア1

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, aes-128-ecb', 'CpioqMdt3wx4Wq', OPENSSL_ZERO_PADDING));
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

復号化には成功し、暗号化が想定通りにいきません。

2023/06/07 12:24

投稿

ddddddddd
ddddddddd

スコア1

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
- $method = 'aes-128-ecb';
13
+ これをもう一度暗号化しても、元の暗号化文字列と一致しません。
13
- $ivLength = openssl_cipher_iv_length($method);
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
- $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
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
- mcrypt_generic_init($td, 'keyyyyyyyy', $iv);
23
+ $plane = 'シブヤエキ';
44
-
45
- // 暗号化
46
- // INFO: 空白文字を保持するためにbase64でエンコード
47
- $encrypted_text = base64_encode(mcrypt_generic($td, base64_encode($plain_text)));
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://shinobit.net/archives/131
29
+ https://stackoverflow.com/questions/45218465/mcrypt-rijndael-128-to-openssl-aes-128-ecb-conversion
62
30
  こちらを参考に実装を進めていますが、うまくいきません。
63
31
 
64
32
  ### 補足情報(FW/ツールのバージョンなど)

1

ソースコードを修正しました。

2023/06/07 09:33

投稿

ddddddddd
ddddddddd

スコア1

test CHANGED
File without changes
test CHANGED
@@ -9,13 +9,19 @@
9
9
  ### 発生している問題・エラーメッセージ
10
10
 
11
11
  ```
12
- openssl_cipher_iv_length(’aes-128-ecb');
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