それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

openssl の暗号化と同等のrubyでの処理

openssl で暗号化すると便利なんだけど

暗号化をおこなったデータをそのままプログラムを経由して読みたいよね。やっぱり。

openssl で暗号化 → ruby で復号化

openssl enc -e  -aes-256-cbc -salt -in test.json -out enc.json -pass password:my_pass

これで暗号化したファイルを、rubyでデコードしてみる

      passphrase = "my_pass"
      data = open("enc.json", "r").read
      data = data.force_encoding("ASCII-8BIT")
      salt = data[8,8]
      data = data[16, data.size]
      cipher = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
      cipher.decrypt
      cipher.pkcs5_keyivgen(passphrase, salt, 1 )
      data = cipher.update(data) + cipher.final
      open("out.json", "w"){|f| f.write data }

ruby で暗号化 → openssl で復号化

ruby で暗号化したものを openssl で復号化する。

      passphrase = "秘密秘密"
      data = open("plain.json", "r").read
      cipher = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
      salt = OpenSSL::Random.random_bytes(8)
      cipher.encrypt
      cipher.pkcs5_keyivgen(passphrase, salt, 1 )
      data = cipher.update(data) + cipher.final
      ## salted
      data = "Salted__" + salt + data
      open("enc.json", "w"){|f| f.write data }

openssl で復号化

openssl enc -d  -aes-256-cbc -salt -in enc.json -out plain.json -pass password:秘密秘密