次の要件を満たすファイルの暗号化/復号化アルゴリズムを探しています。
- アルゴリズムは信頼できるものでなければならない
- かなり大きなファイルでもアルゴリズムは高速になるはずです
- 秘密鍵は、いくつかのパラメータ(パスワードなど)によって生成できます。
- 生成された秘密鍵は公開鍵と互換性がある必要があります (公開鍵は一度だけ生成され、データベースに保存されます)
提案されたアルゴリズムの Ruby 実装はありますか?
ベストアンサー1
よく注意してください:emboss がコメントで述べているように、この回答は実際のシステムには適していません。まず、この方法を使用してファイルの暗号化を行うべきではありません (たとえば、ライブラリは AES を提供します)。次に、この回答では、ソリューションの設計方法にも影響するより広範な問題に対処していません。
元の情報源には、詳細はこちら。
Ruby では openssl を使用してこれを実行できます。
#!/usr/bin/env ruby
# ENCRYPT
require 'openssl'
require 'base64'
public_key_file = 'public.pem';
string = 'Hello World!';
public_key = OpenSSL::PKey::RSA.new(File.read(public_key_file))
encrypted_string = Base64.encode64(public_key.public_encrypt(string))
そして復号化します:
#!/usr/bin/env ruby
# DECRYPT
require 'openssl'
require 'base64'
private_key_file = 'private.pem';
password = 'boost facile'
encrypted_string = %Q{
...
}
private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file),password)
string = private_key.private_decrypt(Base64.decode64(encrypted_string))
からここ