I have a question about Encrypt Decrypt in Rails
and Laravel 5
Case:
I want to encrypt some data in Rails and data will be decrypted sometimes in Laravel. I've already read how Laravel encrypts flow with HMAC sha256, SAE-256-CBC
and do the flow in Rails.
But unfortunately, Laravel can not decrypt
Here my code:
@cipher = OpenSSL::Cipher.new('aes-256-cbc')
@key = ENV['LARAVEL_APP_KEY']
...
@cipher.encrypt
@cipher.key = Base64.decode64(@key)
iv = @cipher.random_iv
@cipher.iv = iv
encrypted = @cipher.update(PHP.serialize(string)) + @cipher.final
iv = base64_encode(iv)
encrypted = base64_encode(encrypted)
mac = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), iv + encrypted, Base64.decode64(@key))
hash = { iv: iv, value: encrypted, mac: mac }
base64_encode(hash.to_json)
- The
APP_KEY
has already bee same between Rails and Laravel - Expected result: Rails
Encrypt 1000
, Laravel will get 1000 too - Real result: Rails
Encrypt 1000
, Laravel get the encryption (ex: eyfasffksffadsfreqw)
Please help! Many thanks!