2017-11-03

Rubyで暗号化した文字列をJavaScriptで復号化してみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Qiitaにある
JavaScriptで暗号化した文字列をRubyで復号化してみた
という記事の逆をやってみたいと思ってみました。

JavaScript側では、CryptJSを使ってRuby側で暗号されたものを
var text = CryptoJS.AES.decrypt(data, "pass").toString(CryptoJS.enc.Utf8);
で複合化をできるようにRuby側で暗号化したいと思います。
Ruby側で暗号化された値が上記のdataに入る感じです。

Ruby側は以下のような感じです。

require "openssl"
require "base64"
def encrypt(data, passwd)
enc = OpenSSL::Cipher.new("AES-256-CBC")
enc.encrypt
salt = OpenSSL::Random.random_bytes(8)
enc.pkcs5_keyivgen(passwd, salt, 1)
enc_data = enc.update(data) + enc.final
ret = "Salted__" + salt + enc_data
ret = Base64.encode64(ret).encode("utf-8").chomp
return ret
end
view raw encrypt.rb hosted with ❤ by GitHub

これを使ってruby側で
enc_data = encrypt(”hogehoge”,"pass")
としてできた、enc_dataの内容をJavascript側のdataに入れてやれば、hogehogeと戻せる感じでした。