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

質問編集履歴

8

文面を改良

2017/01/02 21:41

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -170,6 +170,8 @@
170
170
 
171
171
  ここまで試したところで少し疲れてしまいまして、パターンが多すぎて混乱しています。そもそもものすごく簡単なことを遠回りに実装しているような気もしてきました。
172
172
 
173
+ 一体、RubyのString#cryptと同じ暗号化文字列をnode.jsで出力するにはどうすれば良いのでしょうか。
174
+
173
175
  以下の質問事項
174
176
 
175
177
  0. node環境でRubyのString#cryptと同じアルゴリズムの暗号化関数を使うにはどうすれば良いですか?

7

文章を変更

2017/01/02 21:41

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -162,13 +162,13 @@
162
162
 
163
163
  うまくいったか!?と期待したのですが、どうやらString#cryptとそれに利用されているsaltを使って出力した文字列とは異なるようでした。
164
164
 
165
- そもそも、RubyのString#cryptが出力する文字列は```'ha4NAXDFh4S3c'```のような文字列であり、上記の出力結果はどうみても16進数の数値になっているように見えます。
165
+ そもそも、RubyのString#cryptが出力する文字列は```'ha4NAXDFh4S3c'```のような文字列であり、上記の出力結果はどうみても16進数の数値文字列になっているように見えます。
166
166
 
167
167
  引数に```'hex'```を指定しているので当然だろうということで、引数を削ってみたのですがうまく出力できませんでした。
168
168
 
169
- こういう時はドキュメントをしっかり読むことだと思いまして[ここら辺](https://nodejs.org/api/crypto.html#crypto_cipher_update_data_input_encoding_output_encoding)を見てみると、どうやらencodingは```utf8```以外に```ascii```や```latin1```を指定できるようで、また出力方法も```hex```以外に```latin1```や```base64```が指定できるようでした。
169
+ こういう時はドキュメントをしっかり読むことが大切だと思いまして[ここら辺](https://nodejs.org/api/crypto.html#crypto_cipher_update_data_input_encoding_output_encoding)を見てみると、どうやらencodingは```utf8```以外に```ascii```や```latin1```を指定できるようで、また出力方法も```hex```以外に```latin1```や```base64```が指定できるようでした。
170
170
 
171
- ここまで試したところで少し疲れてしまいまして、どこ間違っているかなどの指摘含め何かアドバイスをいただけたら...思いまして質問させてただきました。
171
+ ここまで試したところで少し疲れてしまいまして、パターン多すぎ混乱してます。そそもものすごく簡単なこを遠回りに実装しているような気もしてきました。
172
172
 
173
173
  以下の質問事項
174
174
 

6

文章を修正

2017/01/02 21:37

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -162,6 +162,12 @@
162
162
 
163
163
  うまくいったか!?と期待したのですが、どうやらString#cryptとそれに利用されているsaltを使って出力した文字列とは異なるようでした。
164
164
 
165
+ そもそも、RubyのString#cryptが出力する文字列は```'ha4NAXDFh4S3c'```のような文字列であり、上記の出力結果はどうみても16進数の数値になっているように見えます。
166
+
167
+ 引数に```'hex'```を指定しているので当然だろうということで、引数を削ってみたのですがうまく出力できませんでした。
168
+
169
+ こういう時はドキュメントをしっかり読むことだと思いまして[ここら辺](https://nodejs.org/api/crypto.html#crypto_cipher_update_data_input_encoding_output_encoding)を見てみると、どうやらencodingは```utf8```以外に```ascii```や```latin1```を指定できるようで、また出力方法も```hex```以外に```latin1```や```base64```が指定できるようでした。
170
+
165
171
  ここまで試したところで少し疲れてしまいまして、どこが間違っているかなどの指摘も含め何かアドバイスをいただけたら...と思いまして質問させていただきました。
166
172
 
167
173
  以下の質問事項

5

文面を修正

2017/01/02 21:34

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -17,7 +17,7 @@
17
17
  0. node環境でRubyのString#cryptと同じアルゴリズムの暗号化関数を使うにはどうすれば良いですか?
18
18
  0. パスワードの暗号化に使うアルゴリズムはSHA256で問題ないですか?
19
19
 
20
- 1に関しましては、調査したところDESまたはcrypt(3)というアルゴリズムが使われているのかな?と推測しているのですが、暗号化についてあまり詳しくないために確証が持てていません。
20
+ ここからは作業の履歴になりますが、1に関しまして調査したところDESまたはcrypt(3)というアルゴリズムが使われているのかな?と推測しているのですが、暗号化についてあまり詳しくないために確証が持てていません。
21
21
 
22
22
  わからないならとにかくやってみよう!と思い、とりあえずDESアルゴリズムが利用できる暗号化モジュールを探してみたところ以下が見つかりました。
23
23
 

4

誤字を修正

2017/01/02 21:20

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  そのサービスのユーザデータは全てデータベース(MySQL)に保存されており、パスワードがRubyのString#cryptによって暗号化されて保存されていることがわかりました。
4
4
 
5
- サービスのconfigファイルには暗号化に必要なsalt文字列も記載されていのでString#cryptで利用されている暗号化アルゴリズムとconfigに記載されているsaltを利用すれば異なる環境でも同じ暗号化文字列を出力することができると考えています。
5
+ プロジェクトファイルのconfigには暗号化に必要なsalt文字列も記載されていのでString#cryptで利用されている暗号化アルゴリズムとconfigに記載されているsaltを利用すれば異なる環境でも同じ暗号化文字列を出力することができると考えています。
6
6
 
7
7
  現在、サービスの環境をrubyからnodeに切り替えている最中なのですが、古いサービスと新しいサービスとでパスワードの暗号化アルゴリズムが異なっています。
8
8
 

3

誤字を修正

2017/01/02 21:19

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  Ruby2.3.0p0で動作していた古いサービスがあります。
2
2
 
3
- そのサービスのユーザデータは全てデータベース(MySQL)に保存されており、パスワードがRubyのString#cryptによって暗号化されて保存されていことがわかりました。
3
+ そのサービスのユーザデータは全てデータベース(MySQL)に保存されており、パスワードがRubyのString#cryptによって暗号化されて保存されていことがわかりました。
4
4
 
5
5
  サービスのconfigファイルには暗号化に必要なsalt文字列も記載されているのでString#cryptで利用されている暗号化アルゴリズムとconfigに記載されているsaltを利用すれば異なる環境でも同じ暗号化文字列を出力することができると考えています。
6
6
 

2

タイトルを変更

2017/01/02 21:18

投稿

hojo
hojo

スコア195

title CHANGED
@@ -1,1 +1,1 @@
1
- RubyのString#cryptと同じ暗号化文字列をnode.jsで利用するにはどうすれば良いですか?
1
+ RubyのString#cryptと同じ暗号化文字列をnode.jsで出力するにはどうすれば良いですか?
body CHANGED
File without changes

1

文面の追加

2017/01/02 21:17

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -160,4 +160,15 @@
160
160
  // '390910129cef7a1c'
161
161
  ```
162
162
 
163
- うまくいったか!?と期待したのですが、どうやらString#cryptとそれに利用されているsaltを使って出力した文字列とは異なるようで
163
+ うまくいったか!?と期待したのですが、どうやらString#cryptとそれに利用されているsaltを使って出力した文字列とは異なるようでした
164
+
165
+ ここまで試したところで少し疲れてしまいまして、どこが間違っているかなどの指摘も含め何かアドバイスをいただけたら...と思いまして質問させていただきました。
166
+
167
+ 以下の質問事項
168
+
169
+ 0. node環境でRubyのString#cryptと同じアルゴリズムの暗号化関数を使うにはどうすれば良いですか?
170
+ 0. パスワードの暗号化に使うアルゴリズムはSHA256で問題ないですか?
171
+
172
+ に加えて、何か気になることがございましたら指摘していただけると助かります。
173
+
174
+ 宜しくお願いいたします。m(_ _)m