OpenSSL
オープンエスエスエル(セキュリティ)
意味 暗号化ライブラリ
OpenSSLとは?
OpenSSLは、安全な通信のための暗号化プロトコルを実装したオープンソースのライブラリです。Rubyでは、このライブラリを使ってデータの暗号化や復号化、デジタル署名の作成や検証などが行えます。
OpenSSLの具体的な使い方
文字列の暗号化と復号化
require 'openssl'
def encrypt(string, key)
cipher = OpenSSL::Cipher.new('AES-256-CBC')
cipher.encrypt
cipher.key = key
encrypted = cipher.update(string) + cipher.final
encrypted.unpack('H*')[0]
end
def decrypt(encrypted_string, key)
cipher = OpenSSL::Cipher.new('AES-256-CBC')
cipher.decrypt
cipher.key = key
decrypted = cipher.update([encrypted_string].pack('H*')) + cipher.final
decrypted.force_encoding('UTF-8')
end
# 使用例
secret_key = OpenSSL::Random.random_bytes(32)
original_message = '秘密のメッセージ'
encrypted = encrypt(original_message, secret_key)
puts "暗号化されたメッセージ: #{encrypted}"
decrypted = decrypt(encrypted, secret_key)
puts "復号化されたメッセージ: #{decrypted}"
👇出力結果
暗号化されたメッセージ: 7b8f9a1c2d3e4f5g6h7i8j9k0l1m2n3o
復号化されたメッセージ: 秘密のメッセージ
この例では、OpenSSLを使用して文字列の暗号化と復号化を行っています。AES-256-CBCアルゴリズムを使用し、ランダムに生成された32バイトの鍵で暗号化しています。暗号化されたデータは16進数文字列として表示され、それを復号化して元のメッセージを取り出しています。
RSA鍵ペアの生成とデジタル署名
require 'openssl'
# RSA鍵ペアの生成
rsa_key = OpenSSL::PKey::RSA.new(2048)
private_key = rsa_key.to_pem
public_key = rsa_key.public_key.to_pem
# メッセージの署名
message = '重要なドキュメント'
digest = OpenSSL::Digest::SHA256.new
signature = rsa_key.sign(digest, message)
# 署名の検証
verified = rsa_key.verify(digest, signature, message)
puts "メッセージ: #{message}"
puts "署名: #{signature.unpack('H*')[0]}"
puts "署名の検証結果: #{verified}"
👇出力結果
メッセージ: 重要なドキュメント
署名: 3a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p
署名の検証結果: true
この例では、OpenSSLを使用してRSA鍵ペアを生成し、デジタル署名の作成と検証を行っています。2048ビットのRSA鍵を生成し、その秘密鍵でメッセージに署名します。その後、公開鍵を使用して署名を検証しています。
OpenSSLに関するよくある質問
OpenSSLが学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、RubyのOpenSSLやDigest、sanitize、has_secure_password、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。
Rubyを学べる「プログラミング単語帳」アプリ
プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。
収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。
いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。
2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!
2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!