回答編集履歴

4

コメント微修正

2018/02/13 16:19

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,8 @@
1
1
  JS側で生成するivの長さが間違っているようです
2
2
 
3
- また、php側でのencodeも参考してください
3
+ また、php側での複合化使うメソッドが違うようです
4
+
5
+
4
6
 
5
7
 
6
8
 

3

質問の形式に近づけて答える

2018/02/13 16:19

投稿

退会済みユーザー
test CHANGED
@@ -1,10 +1,10 @@
1
- js側の暗号化salt本当にそれでいのしょうか。
1
+ JSで生成するiv長さ間違ってるよう
2
2
 
3
- また、keyを渡しては元も子もな気がします。
3
+ また、php側でのencodeも参考にしてくださ
4
4
 
5
5
 
6
6
 
7
- 下記で動作するので参考にしてください。
7
+ 下記で動作サンプルになりま
8
8
 
9
9
 
10
10
 
@@ -12,75 +12,63 @@
12
12
 
13
13
  ```javascript
14
14
 
15
-
16
-
17
15
  // 暗号化用パス
18
16
 
19
- var secretPass = CryptoJS.enc.Utf8.parse('pass')
17
+ var secretPass = CryptoJS.enc.Utf8.parse('pass');
20
18
 
21
19
 
22
20
 
23
21
  // ランダム値生成してsaltを設定
24
22
 
25
- var salt = CryptoJS.lib.WordArray.random(256)
23
+ var salt = CryptoJS.lib.WordArray.random(128 / 16);
26
24
 
27
25
 
28
26
 
29
27
  // 暗号化で使うキーを設定(先ほど作ったsecretPassとsaltを使用)
30
28
 
31
- var key = CryptoJS.PBKDF2(secretPass, salt, {hasher: CryptoJS.algo.SHA512, keySize: 64 / 8, iterations: 1000 })
29
+ var key = CryptoJS.PBKDF2(secretPass, salt, {keySize: 128 / 16, iterations: 1000 });
32
30
 
33
31
 
34
32
 
35
33
  //初期化ベクトル
36
34
 
37
- var iv = CryptoJS.lib.WordArray.random(16);
35
+ var iv = CryptoJS.lib.WordArray.random(128 / 8);
38
36
 
39
37
 
40
38
 
41
39
  //暗号化オプション(IV:初期化ベクトル, CBCモード, パディングモード:PKCS7)
42
40
 
43
- var options = {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7}
41
+ var options = {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7};
44
42
 
45
43
 
46
44
 
47
45
  //暗号化内容のエンコーディングは「UTF-8」
48
46
 
49
- var baseText = CryptoJS.enc.Utf8.parse('IWantToDecryptThisString')
47
+ var baseText = CryptoJS.enc.Utf8.parse('IWantToDecryptThisString');
50
48
 
51
49
 
52
50
 
53
51
  //暗号化
54
52
 
55
- var encrypted = CryptoJS.AES.encrypt(baseText, key, options)
53
+ var encrypted = CryptoJS.AES.encrypt(baseText, key, options);
56
54
 
57
55
 
58
56
 
59
- //////////////////////////////////////////////////////
60
-
61
- // 以下サンプル出力結果
62
-
63
- //////////////////////////////////////////////////////
64
-
65
-
66
-
67
- // ZeNonrvklYxYjk4RIEsdCf/92XYISbkVaGd3/OTmCMs=
57
+ // UA2EX1WGut9X0r3KyGvja0rJoTLGGuqt548VqOC2uS4=
68
58
 
69
59
  console.log(CryptoJS.enc.Base64.stringify(encrypted.ciphertext))
70
60
 
71
61
 
72
62
 
73
- // 6de127c2abfd0899d219e0bbb1ba427c2f0f60e54fd55dee6a25fe50c4b19aedc4305d9a5d461ee82b372c042bfe696b30dfcbeb908aaf83329307b0b3898f5062301665b2d7ba71bd120b804a8bb566988b25cb9e688f6dbdcdd9bc3fde011f40d95d6b6908cabf96c61af94ab3f042c49a239aa0556292d367c49034b229d5ac1f389543f503ce5c832b0a2b5daedfa6ab012f48c345033e44d0f5d29eada6919d9e53c275a2cb65e9e93a2b2f1631341ee1076cdc137e4acfb1f199b1e9a9baba2af641e7d5ee3db8cd835c0e38e2be52195754e17ecf39a651c03e576ca1c46dcbb4cd701de356c880c3cdf45fd4ad6ed423d1d57a2c3dcc0e64415b24a0
63
+ // 448e82b5ba5ce418b1e89f720af3e0680c8b6958f3050632849dfc028fa8784e
74
64
 
75
- console.log(CryptoJS.enc.Hex.stringify(salt))
65
+ console.log(CryptoJS.enc.Hex.stringify(key))
76
66
 
77
67
 
78
68
 
79
- // 9985af2f61ddaf8cb6002c893d1ff7a0
69
+ // 6f0d81e8371d8befb39054ae2f969f36
80
70
 
81
71
  console.log(CryptoJS.enc.Hex.stringify(iv))
82
-
83
-
84
72
 
85
73
  ```
86
74
 
@@ -90,33 +78,29 @@
90
78
 
91
79
  ```php
92
80
 
81
+ <?php
82
+
83
+
84
+
93
- function decData( $encData, $iv, $salt ) {
85
+ function decData( $encData, $iv, $key ) {
94
86
 
95
87
  $encData = base64_decode($encData);
96
88
 
97
89
  $iv = hex2bin($iv);
98
90
 
99
- $salt = hex2bin($salt);
91
+ $key = hex2bin($key);
100
92
 
101
93
 
102
94
 
103
95
  // 復号に使うメソッド
104
96
 
105
- $method = 'aes-256-cbc';
97
+ $method = 'AES-256-CBC';
106
98
 
107
99
 
108
100
 
109
101
  // 復号に使うオプション
110
102
 
111
103
  $options = OPENSSL_RAW_DATA;
112
-
113
-
114
-
115
- // 復号key
116
-
117
- $key = hash_pbkdf2("sha512", "pass", $salt, 1000, 64);
118
-
119
- $key = hex2bin($key);
120
104
 
121
105
 
122
106
 
@@ -130,14 +114,14 @@
130
114
 
131
115
 
132
116
 
133
- $encData = "ZeNonrvklYxYjk4RIEsdCf/92XYISbkVaGd3/OTmCMs=";
117
+ $encData = "UA2EX1WGut9X0r3KyGvja0rJoTLGGuqt548VqOC2uS4=";
134
118
 
135
- $iv = "9985af2f61ddaf8cb6002c893d1ff7a0";
119
+ $key = "448e82b5ba5ce418b1e89f720af3e0680c8b6958f3050632849dfc028fa8784e";
136
120
 
137
- $salt = "6de127c2abfd0899d219e0bbb1ba427c2f0f60e54fd55dee6a25fe50c4b19aedc4305d9a5d461ee82b372c042bfe696b30dfcbeb908aaf83329307b0b3898f5062301665b2d7ba71bd120b804a8bb566988b25cb9e688f6dbdcdd9bc3fde011f40d95d6b6908cabf96c61af94ab3f042c49a239aa0556292d367c49034b229d5ac1f389543f503ce5c832b0a2b5daedfa6ab012f48c345033e44d0f5d29eada6919d9e53c275a2cb65e9e93a2b2f1631341ee1076cdc137e4acfb1f199b1e9a9baba2af641e7d5ee3db8cd835c0e38e2be52195754e17ecf39a651c03e576ca1c46dcbb4cd701de356c880c3cdf45fd4ad6ed423d1d57a2c3dcc0e64415b24a0";
121
+ $iv = "6f0d81e8371d8befb39054ae2f969f36";
138
122
 
139
123
 
140
124
 
141
- var_dump(decData( $encData, $iv, $salt ));
125
+ var_dump(decData( $encData, $iv, $key ));
142
126
 
143
127
  ```

2

markdown

2018/02/13 16:17

投稿

退会済みユーザー
test CHANGED
@@ -10,9 +10,7 @@
10
10
 
11
11
  js
12
12
 
13
-
14
-
15
- ```
13
+ ```javascript
16
14
 
17
15
 
18
16
 
@@ -90,7 +88,7 @@
90
88
 
91
89
  php
92
90
 
93
- ```
91
+ ```php
94
92
 
95
93
  function decData( $encData, $iv, $salt ) {
96
94
 

1

コメント修正

2018/02/13 14:11

投稿

退会済みユーザー
test CHANGED
@@ -58,7 +58,13 @@
58
58
 
59
59
 
60
60
 
61
+ //////////////////////////////////////////////////////
62
+
61
- $('#msg').html(String(encrypted))
63
+ // 以下サンプル出力結果
64
+
65
+ //////////////////////////////////////////////////////
66
+
67
+
62
68
 
63
69
  // ZeNonrvklYxYjk4RIEsdCf/92XYISbkVaGd3/OTmCMs=
64
70