OpenSSL
-> インターネット上で標準的に利用される暗号通信プロトコルであるSSLおよびTLSの機能を実装したオープンソースライブラリ
require 'openssl' data = '*secret data*' key = 'a' * 32 iv = 'i' * 16 enc = OpenSSL::Cipher.new('AES-256-CBC') enc.encrypt enc.key = key enc.iv = iv encrypted_data = enc.update(data) + enc.final # print encrypted_data dec = OpenSSL::Cipher.new('AES-256-CBC') dec.decrypt dec.key = key dec.iv = iv decrypted_data = dec.update(encrypted_data) + dec.final print decrypted_data
vagrant@vagrant-ubuntu-trusty-64:~/bitcoin$ ruby main.rb
5????
g`??Ա?
vagrant@vagrant-ubuntu-trusty-64:~/bitcoin$ ruby main.rb
*secret data*
IntelのIvy Bridge以降のCPUやRaspberry Pi, Apple A7以降のプロセッサには、熱雑音を利用して物理的に乱数を発生させるハードウェア乱数生成器が備わっている
rubyの安全な乱数: securerandom
require 'securerandom' hex = SecureRandom.hex(32) print hex
vagrant@vagrant-ubuntu-trusty-64:~/bitcoin$ ruby main.rb
1fbd11b0d5588de19571e3679ee86387d2449b6d376f6211498e4dbd2557fabd