class OpenSSL::Cipher
Overview
A class which can be used to encrypt and decrypt data using a specified cipher.
NOTE The ciphers available to an application are determined by the linked version of the system SSL library. A comprehensive list of ciphers can be found in the OpenSSL Cipher documentation.
require "random/secure"
require "openssl"
def encrypt(data, key, iv)
cipher = OpenSSL::Cipher.new("aes-256-cbc")
cipher.encrypt
cipher.key = key
cipher.iv = iv
io = IO::Memory.new
io.write(cipher.update(data))
io.write(cipher.final)
io.rewind
io.to_slice
end
def decrypt(data, key, iv)
cipher = OpenSSL::Cipher.new("aes-256-cbc")
cipher.decrypt
cipher.key = key
cipher.iv = iv
io = IO::Memory.new
io.write(cipher.update(data))
io.write(cipher.final)
io.rewind
io.gets_to_end
end
key = Random::Secure.random_bytes(64) # You can also use OpenSSL::Cipher#random_key to do this same thing
iv = Random::Secure.random_bytes(32) # You can also use OpenSSL::Cipher#random_iv to do this same thing
encrypted_data = encrypt("Encrypted", key, iv) # => Bytes[95, 182, 21, 86, 193, 155, 149, 164, 82, 102, 171, 182, 56, 153, 223, 33]
decrypted_data = decrypt(encrypted_data, key, iv) # => "Encrypted" Defined in:
openssl/cipher.cr Constructors
Instance Method Summary
Instance methods inherited from class Reference
==(other : self)
==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==,
dup dup,
hash(hasher) hash,
initialize initialize,
inspect(io : IO) : Nil inspect,
object_id : UInt64 object_id,
pretty_print(pp) : Nil pretty_print,
same?(other : Reference) : Bool
same?(other : Nil) same?,
to_s(io : IO) : Nil to_s Constructor methods inherited from class Reference
new new,
unsafe_construct(address : Pointer, *args, **opts) : self unsafe_construct Class methods inherited from class Reference
pre_initialize(address : Pointer) pre_initialize Instance methods inherited from class Object
! : Bool !,
!=(other) !=,
!~(other) !~,
==(other) ==,
===(other : JSON::Any)
===(other : YAML::Any)
===(other) ===,
=~(other) =~,
as(type : Class) as,
as?(type : Class) as?,
class class,
dup dup,
hash(hasher)
hash hash,
in?(collection : Object) : Bool
in?(*values : Object) : Bool in?,
inspect(io : IO) : Nil
inspect : String inspect,
is_a?(type : Class) : Bool is_a?,
itself itself,
nil? : Bool nil?,
not_nil!(message)
not_nil! not_nil!,
pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect,
pretty_print(pp : PrettyPrint) : Nil pretty_print,
responds_to?(name : Symbol) : Bool responds_to?,
tap(&) tap,
to_json(io : IO) : Nil
to_json : String to_json,
to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json,
to_s(io : IO) : Nil
to_s : String to_s,
to_yaml(io : IO) : Nil
to_yaml : String to_yaml,
try(&) try,
unsafe_as(type : T.class) forall T unsafe_as Class methods inherited from class Object
from_json(string_or_io : String | IO, root : String)
from_json(string_or_io : String | IO) from_json,
from_yaml(string_or_io : String | IO) from_yaml Macros inherited from class Object
class_getter(*names, &block) class_getter,
class_getter!(*names) class_getter!,
class_getter?(*names, &block) class_getter?,
class_property(*names, &block) class_property,
class_property!(*names) class_property!,
class_property?(*names, &block) class_property?,
class_setter(*names) class_setter,
def_clone def_clone,
def_equals(*fields) def_equals,
def_equals_and_hash(*fields) def_equals_and_hash,
def_hash(*fields) def_hash,
delegate(*methods, to object) delegate,
forward_missing_to(delegate) forward_missing_to,
getter(*names, &block) getter,
getter!(*names) getter!,
getter?(*names, &block) getter?,
property(*names, &block) property,
property!(*names) property!,
property?(*names, &block) property?,
setter(*names) setter Constructor Detail
Instance Method Detail
def authenticated? : BoolSource
Sets this cipher to decryption mode.
Sets this cipher to encryption mode.
Outputs the decrypted or encrypted buffer.
How many bytes the iv should be.
How many bytes the key should be.
Resets the encrypt/decrypt mode.
def update(data)Source
Add the data to be encrypted or decrypted to this cipher's buffer.