質問編集履歴

7

るbyついあk

2017/10/02 02:26

投稿

kimurayu
kimurayu

スコア158

test CHANGED
File without changes
test CHANGED
@@ -19,6 +19,30 @@
19
19
  他の方法があれば教えてください。
20
20
 
21
21
 
22
+
23
+ ruby-onetimekeyをjavascriptから受け取って暗号化
24
+
25
+ ```ruby
26
+
27
+ salt = “\x00\x01\x02\x03\x04\x05\x06\x07”
28
+
29
+ enc = OpenSSL::Cipher.new(‘AES-128-CBC’)
30
+
31
+ enc.encrypt
32
+
33
+ enc.key = OpenSSL::PKCS5.pbkdf2_hmac_sha1(onetimekey, salt, 65536, 128)
34
+
35
+ iv = enc.random_iv
36
+
37
+ a = enc.update(text)
38
+
39
+ b = enc.final
40
+
41
+ require “base64"
42
+
43
+ return Base64.encode64 iv + a + b
44
+
45
+ ```
22
46
 
23
47
 
24
48
 

6

コード追加

2017/10/02 02:26

投稿

kimurayu
kimurayu

スコア158

test CHANGED
File without changes
test CHANGED
@@ -103,3 +103,71 @@
103
103
  ```
104
104
 
105
105
  とエラーとなります。
106
+
107
+ core.js - Utf8.stringifyの
108
+
109
+
110
+
111
+ ```javascript
112
+
113
+ crypto-js/core.js
114
+
115
+
116
+
117
+ /**
118
+
119
+ * UTF-8 encoding strategy.
120
+
121
+ */
122
+
123
+ var Utf8 = C_enc.Utf8 = {
124
+
125
+ /**
126
+
127
+ * Converts a word array to a UTF-8 string.
128
+
129
+ *
130
+
131
+ * @param {WordArray} wordArray The word array.
132
+
133
+ *
134
+
135
+ * @return {string} The UTF-8 string.
136
+
137
+ *
138
+
139
+ * @static
140
+
141
+ *
142
+
143
+ * @example
144
+
145
+ *
146
+
147
+ * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
148
+
149
+ */
150
+
151
+ stringify: function (wordArray) {
152
+
153
+ try {
154
+
155
+ return decodeURIComponent(escape(Latin1.stringify(wordArray)));
156
+
157
+ } catch (e) {
158
+
159
+ throw new Error('Malformed UTF-8 data');
160
+
161
+ }
162
+
163
+ },
164
+
165
+ ```
166
+
167
+ ```javascript
168
+
169
+ decodeURIComponent(escape(Latin1.stringify(wordArray))
170
+
171
+ ```
172
+
173
+ が試行エラーです

5

コード修正

2017/10/02 01:25

投稿

kimurayu
kimurayu

スコア158

test CHANGED
File without changes
test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
  ```javascript
90
90
 
91
- decrypted.toString(CryptoJS.enc.Utf8);
91
+ string = decrypted.toString(CryptoJS.enc.Utf8);
92
92
 
93
93
  ```
94
94
 

4

エラーを追加

2017/10/02 01:05

投稿

kimurayu
kimurayu

スコア158

test CHANGED
File without changes
test CHANGED
@@ -83,3 +83,23 @@
83
83
 
84
84
 
85
85
  得たい結果はjson文字列です
86
+
87
+
88
+
89
+ ```javascript
90
+
91
+ decrypted.toString(CryptoJS.enc.Utf8);
92
+
93
+ ```
94
+
95
+
96
+
97
+ を実行すると
98
+
99
+ ```javascript
100
+
101
+ Uncaught Error: Malformed Utf8-data
102
+
103
+ ```
104
+
105
+ とエラーとなります。

3

2017/10/02 01:04

投稿

kimurayu
kimurayu

スコア158

test CHANGED
File without changes
test CHANGED
@@ -79,3 +79,7 @@
79
79
  ```
80
80
 
81
81
  こういうものになりました。
82
+
83
+
84
+
85
+ 得たい結果はjson文字列です

2

追加記載

2017/10/01 13:37

投稿

kimurayu
kimurayu

スコア158

test CHANGED
File without changes
test CHANGED
@@ -47,3 +47,35 @@
47
47
 
48
48
 
49
49
  ```
50
+
51
+
52
+
53
+
54
+
55
+ CryptJS では、
56
+
57
+
58
+
59
+ ```javascript
60
+
61
+ decrypted = CryptoJS.AES.decrypt(xhr.response, password);
62
+
63
+ ```
64
+
65
+
66
+
67
+ とやりましたが結果は
68
+
69
+ ```javascript
70
+
71
+ init {words: Array(4), sigBytes: -226}
72
+
73
+ sigBytes:-226
74
+
75
+ words:(4) [-1167195665, -2012345878, -547270904, -1822799947]
76
+
77
+ __proto__:Object
78
+
79
+ ```
80
+
81
+ こういうものになりました。

1

追記

2017/10/01 02:19

投稿

kimurayu
kimurayu

スコア158

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- Javascript から サーバに パスワード付きで GET -> Ruby でAES暗号化->Base64エンコード文字列生成
5
+ Javascript から サーバに パスワード付きで GET -> Ruby でパスワードを使ってAES暗号化->Base64エンコード文字列生成
6
6
 
7
7
  -> Javascript で受け取る -> AES復号化処理をする
8
8