Ruby 2.7.0 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::Cipherクラス
クラス・モジュールの継承リスト: OpenSSL::Cipher < Object < Kernel < BasicObject
共通鍵暗号のために抽象化されたインターフェースを提供するクラスです。
基本的にこのクラスを直接使ってデータを暗号化することは避けてください。通常はより高水準なインターフェースが利用可能なはずです。必要なのは暗号アルゴリズムを指定するため OpenSSL::Cipher.new で暗号オブジェクトを生成することだけでしょう。
もし、このクラスを直接利用して暗号化する場合は、暗号の鍵や IV(Initialization Vector)の取り扱いについて正しく理解してからにしてください。
以下の手順で利用します。
ruby 1.8.3 から Cast5 と Idea が CAST5 と IDEA に改名されました。
AES のようなブロック暗号では暗号方式を選択する際にモードを指定する必要があります。このライブラリでは以下のような文字列でモードを指定できます。
これらの文字列の意味は openssl/参考文献 などで調べてください。 AES を用いる場合、通常は CBC を用いれば良いでしょう。選択肢によっては安全性に問題があるので気をつけてください。
require 'openssl' # 暗号化するデータ data = "*secret data*" # パスワード pass = "**secret password**" # salt salt = OpenSSL::Random.random_bytes(8) # 暗号化器を作成する enc = OpenSSL::Cipher.new("AES-256-CBC") enc.encrypt # 鍵とIV(Initialize Vector)を PKCS#5 に従ってパスワードと salt から生成する key_iv = OpenSSL::PKCS5.pbkdf2_hmac_sha1(pass, salt, 2000, enc.key_len + enc.iv_len) key = key_iv[0, enc.key_len] iv = key_iv[enc.key_len, enc.iv_len] # 鍵とIVを設定する enc.key = key enc.iv = iv # 暗号化する encrypted_data = "" encrypted_data << enc.update(data) encrypted_data << enc.final p encrypted_data # 復号化器を作成する dec = OpenSSL::Cipher.new("AES-256-CBC") dec.decrypt # 鍵とIVを設定する dec.key = key dec.iv = iv # 復号化する decrypted_data = "" decrypted_data << dec.update(encrypted_data) decrypted_data << dec.final p decrypted_data
定義 | 説明 | |
---|---|---|
ciphers -> [String]
|
利用可能な暗号方式名を文字列の配列で返します。 |
|
new(name) -> OpenSSL::Cipher
|
共通鍵暗号のアルゴリズム名を渡し、対応する暗号オブジェクトを生成します。 |
定義 | 説明 | |
---|---|---|
block_size -> Integer
|
暗号化のブロックのサイズをバイト数で返します。 |
|
decrypt -> self
|
復号化の準備をします。 |
|
encrypt -> self
|
暗号化の準備をします。 |
|
final -> String
|
暗号オブジェクト内部に残されたデータを暗号化/復号化し、文字列で返します。 |
|
iv=(iv)
|
IV(Initialization Vector) を設定します。 |
|
iv_len -> Integer
|
必要な IV(Initialization Vector) の長さをバイト数で返します。 |
|
key=(key)
|
暗号鍵を設定します。 |
|
key_len -> Integer
|
暗号鍵の長さをバイト数で返します。 |
|
key_len=(length)
|
暗号鍵の長さを変更します。 |
|
name -> String
|
暗号化アルゴリズムの名前を文字列で返します。 |
|
padding=(padding)
|
パディングを設定します。 |
|
pkcs5_keyivgen(pass, salt=nil, num=2048, digest="md5") -> nil
|
pass と salt から鍵と IV を生成し、暗号オブジェクトに設定します。 |
|
random_iv -> String
|
IV を乱数で生成し、暗号オブジェクトに設定します。 |
|
random_key -> String
|
鍵を乱数で生成し、暗号オブジェクトに設定します。 |
|
reset -> self
|
内部状態をリセットします。 |
|
update(data) -> String
|
渡された文字列を暗号化もしくは復号化して文字列として返します。 |
!
!=
__id__
__send__
instance_eval
instance_exec
method_missing
singleton_method_added
singleton_method_removed
singleton_method_undefined
!~
<=>
==
===
=~
_dump
class
clone
define_singleton_method
display
enum_for
eql?
equal?
extend
freeze
frozen?
hash
initialize
initialize_copy
inspect
instance_of?
instance_variable_defined?
instance_variable_get
instance_variable_set
instance_variables
is_a?
itself
marshal_dump
marshal_load
method
methods
nil?
object_id
pretty_inspect
pretty_print
pretty_print_cycle
pretty_print_inspect
pretty_print_instance_variables
private_methods
protected_methods
psych_to_yaml
public_method
public_methods
public_send
remove_instance_variable
respond_to?
respond_to_missing?
send
singleton_class
singleton_method
singleton_methods
taint
tainted?
tap
then
to_a
to_ary
to_hash
to_int
to_io
to_proc
to_regexp
to_s
to_str
trust
untaint
untrust
untrusted?
.yaml_tag
::ARGF
::ARGV
::DATA
::ENV
::FALSE
::NIL
::RUBY_COPYRIGHT
::RUBY_DESCRIPTION
::RUBY_ENGINE
::RUBY_ENGINE_VERSION
::RUBY_PATCHLEVEL
::RUBY_PLATFORM
::RUBY_RELEASE_DATE
::RUBY_REVISION
::RUBY_VERSION
::SCRIPT_LINES__
::STDERR
::STDIN
::STDOUT
::TOPLEVEL_BINDING
::TRUE