回答編集履歴

3

最終的な形に修正しました

2018/07/17 02:49

投稿

mingos
mingos

スコア4025

test CHANGED
@@ -1,8 +1,4 @@
1
1
  モデルに復号処理を書いて、ビューではそれを表示すれば良いでしょう。
2
-
3
-
4
-
5
- ### 修正: 復号処理を独立したメソッドにする
6
2
 
7
3
 
8
4
 
@@ -20,31 +16,19 @@
20
16
 
21
17
 
22
18
 
23
- # とりあえず必ず動くような簡単なコードにする
24
-
25
- # 復号処理はまだ書かない
19
+ # dataを復号した結果を返す
26
20
 
27
21
  def decrypted_data
28
-
29
- return self.id
30
-
31
- end
32
-
33
-
34
-
35
- # 復号処理を独立したメソッドにする
36
-
37
- def decrypted(logid, data)
38
22
 
39
23
  cipher = OpenSSL::Cipher.new("aes-256-ecb")
40
24
 
41
25
  cipher.decrypt
42
26
 
43
- key = logid.each_char.uniq.join
27
+ key = self.logid.each_char.uniq.join
44
28
 
45
29
  cipher.key = (key + "\0"*32)[0,32]
46
30
 
47
- return cipher.update(Base64.decode64 data) + cipher.final
31
+ return cipher.update(Base64.decode64 self.data) + cipher.final
48
32
 
49
33
  end
50
34
 

2

復号処理を独立したメソッドとして定義しました

2018/07/17 02:49

投稿

mingos
mingos

スコア4025

test CHANGED
@@ -2,13 +2,19 @@
2
2
 
3
3
 
4
4
 
5
- ### 修正: まずは必ず動作すると思われるコードにしま
5
+ ### 修正: 復号処理を独立したメソッドにす
6
6
 
7
7
 
8
8
 
9
9
  ```ruby
10
10
 
11
11
  # app/models/personal_log.rb
12
+
13
+ require 'openssl'
14
+
15
+ require 'base64'
16
+
17
+
12
18
 
13
19
  class PersonalLog < ApplicationRecord
14
20
 
@@ -24,32 +30,26 @@
24
30
 
25
31
  end
26
32
 
33
+
34
+
35
+ # 復号処理を独立したメソッドにする
36
+
37
+ def decrypted(logid, data)
38
+
39
+ cipher = OpenSSL::Cipher.new("aes-256-ecb")
40
+
41
+ cipher.decrypt
42
+
43
+ key = logid.each_char.uniq.join
44
+
45
+ cipher.key = (key + "\0"*32)[0,32]
46
+
47
+ return cipher.update(Base64.decode64 data) + cipher.final
48
+
49
+ end
50
+
27
51
 
28
52
 
29
53
  end
30
54
 
31
55
  ```
32
-
33
-
34
-
35
- ```ruby
36
-
37
- # app/views/personal_logs/index.html.erb
38
-
39
-
40
-
41
- <table>
42
-
43
- <% @personal_logs.each do |personal_log| %>
44
-
45
- <tr>
46
-
47
- <td><%= personal_log.decrypted_data %></td>
48
-
49
- </tr>
50
-
51
- <% end %>
52
-
53
- </table>
54
-
55
- ```

1

回答を修正

2018/07/17 02:33

投稿

mingos
mingos

スコア4025

test CHANGED
@@ -1,20 +1,26 @@
1
1
  モデルに復号処理を書いて、ビューではそれを表示すれば良いでしょう。
2
+
3
+
4
+
5
+ ### 修正: まずは必ず動作すると思われるコードにします
2
6
 
3
7
 
4
8
 
5
9
  ```ruby
6
10
 
11
+ # app/models/personal_log.rb
12
+
7
13
  class PersonalLog < ApplicationRecord
8
14
 
9
15
 
10
16
 
17
+ # とりあえず必ず動くような簡単なコードにする
18
+
19
+ # 復号処理はまだ書かない
20
+
11
21
  def decrypted_data
12
22
 
13
- self.dataに対して復号処理を書く
14
-
15
-
16
-
17
- return 結果
23
+ return self.id
18
24
 
19
25
  end
20
26
 
@@ -22,9 +28,17 @@
22
28
 
23
29
  end
24
30
 
31
+ ```
25
32
 
26
33
 
34
+
27
- # view
35
+ ```ruby
36
+
37
+ # app/views/personal_logs/index.html.erb
38
+
39
+
40
+
41
+ <table>
28
42
 
29
43
  <% @personal_logs.each do |personal_log| %>
30
44
 
@@ -36,4 +50,6 @@
36
50
 
37
51
  <% end %>
38
52
 
53
+ </table>
54
+
39
55
  ```