teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

7

るbyついあk

2017/10/02 02:26

投稿

kimurayu
kimurayu

スコア158

title CHANGED
File without changes
body CHANGED
@@ -9,6 +9,18 @@
9
9
  を使おうと試みましたが、うまくできません。
10
10
  他の方法があれば教えてください。
11
11
 
12
+ ruby-onetimekeyをjavascriptから受け取って暗号化
13
+ ```ruby
14
+ salt = “\x00\x01\x02\x03\x04\x05\x06\x07”
15
+ enc = OpenSSL::Cipher.new(‘AES-128-CBC’)
16
+ enc.encrypt
17
+ enc.key = OpenSSL::PKCS5.pbkdf2_hmac_sha1(onetimekey, salt, 65536, 128)
18
+ iv = enc.random_iv
19
+ a = enc.update(text)
20
+ b = enc.final
21
+ require “base64"
22
+ return Base64.encode64 iv + a + b
23
+ ```
12
24
 
13
25
  ```Javascript
14
26
  var password = '6t70g5h624ero4b6ama7958829ck4f1l';

6

コード追加

2017/10/02 02:26

投稿

kimurayu
kimurayu

スコア158

title CHANGED
File without changes
body CHANGED
@@ -50,4 +50,38 @@
50
50
  ```javascript
51
51
  Uncaught Error: Malformed Utf8-data
52
52
  ```
53
- とエラーとなります。
53
+ とエラーとなります。
54
+ core.js - Utf8.stringifyの
55
+
56
+ ```javascript
57
+ crypto-js/core.js
58
+
59
+ /**
60
+ * UTF-8 encoding strategy.
61
+ */
62
+ var Utf8 = C_enc.Utf8 = {
63
+ /**
64
+ * Converts a word array to a UTF-8 string.
65
+ *
66
+ * @param {WordArray} wordArray The word array.
67
+ *
68
+ * @return {string} The UTF-8 string.
69
+ *
70
+ * @static
71
+ *
72
+ * @example
73
+ *
74
+ * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
75
+ */
76
+ stringify: function (wordArray) {
77
+ try {
78
+ return decodeURIComponent(escape(Latin1.stringify(wordArray)));
79
+ } catch (e) {
80
+ throw new Error('Malformed UTF-8 data');
81
+ }
82
+ },
83
+ ```
84
+ ```javascript
85
+ decodeURIComponent(escape(Latin1.stringify(wordArray))
86
+ ```
87
+ が試行エラーです

5

コード修正

2017/10/02 01:25

投稿

kimurayu
kimurayu

スコア158

title CHANGED
File without changes
body CHANGED
@@ -43,7 +43,7 @@
43
43
  得たい結果はjson文字列です
44
44
 
45
45
  ```javascript
46
- decrypted.toString(CryptoJS.enc.Utf8);
46
+ string = decrypted.toString(CryptoJS.enc.Utf8);
47
47
  ```
48
48
 
49
49
  を実行すると

4

エラーを追加

2017/10/02 01:05

投稿

kimurayu
kimurayu

スコア158

title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,14 @@
40
40
  ```
41
41
  こういうものになりました。
42
42
 
43
- 得たい結果はjson文字列です
43
+ 得たい結果はjson文字列です
44
+
45
+ ```javascript
46
+ decrypted.toString(CryptoJS.enc.Utf8);
47
+ ```
48
+
49
+ を実行すると
50
+ ```javascript
51
+ Uncaught Error: Malformed Utf8-data
52
+ ```
53
+ とエラーとなります。

3

2017/10/02 01:04

投稿

kimurayu
kimurayu

スコア158

title CHANGED
File without changes
body CHANGED
@@ -38,4 +38,6 @@
38
38
  words:(4) [-1167195665, -2012345878, -547270904, -1822799947]
39
39
  __proto__:Object
40
40
  ```
41
- こういうものになりました。
41
+ こういうものになりました。
42
+
43
+ 得たい結果はjson文字列です

2

追加記載

2017/10/01 13:37

投稿

kimurayu
kimurayu

スコア158

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,20 @@
22
22
  xmlHttpRequest.open('GET', 'http://hogehoge?' + password);
23
23
 
24
24
 
25
- ```
25
+ ```
26
+
27
+
28
+ CryptJS では、
29
+
30
+ ```javascript
31
+ decrypted = CryptoJS.AES.decrypt(xhr.response, password);
32
+ ```
33
+
34
+ とやりましたが結果は
35
+ ```javascript
36
+ init {words: Array(4), sigBytes: -226}
37
+ sigBytes:-226
38
+ words:(4) [-1167195665, -2012345878, -547270904, -1822799947]
39
+ __proto__:Object
40
+ ```
41
+ こういうものになりました。

1

追記

2017/10/01 02:19

投稿

kimurayu
kimurayu

スコア158

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