Php 在Rails中加密,在Laravel中解密
我有一个关于Rails中的Php 在Rails中加密,在Laravel中解密,php,ruby,laravel,encryption,Php,Ruby,Laravel,Encryption,我有一个关于Rails中的加密解密和Laravel 5 案例: 我想在Rails中加密一些数据,数据有时会在Laravel中解密。我已经阅读了Laravel如何使用HMAC sha256、SAE-256-CBC对流进行加密,并在Rails中执行流。 但不幸的是,拉威尔无法解密 这是我的代码: @cipher = OpenSSL::Cipher.new('aes-256-cbc') @key = ENV['LARAVEL_APP_KEY'] ... @cipher.encrypt @ciphe
加密解密
和Laravel 5
案例:
我想在Rails中加密一些数据,数据有时会在Laravel中解密。我已经阅读了Laravel如何使用HMAC sha256、SAE-256-CBC对流进行加密,并在Rails中执行流。
但不幸的是,拉威尔无法解密
这是我的代码:
@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)
- Rails和Laravel之间的
APP_键
已经相同
- 预期结果:Rails
加密1000
,Laravel也将获得1000
- 实际结果:Rails
Encrypt 1000
,Laravel获得加密(例如:eyfasffksffadsfreqw)
请帮忙!非常感谢 我知道这是一个老问题,但仍然在回答,因为它可能会帮助像我一样的未来读者,这是工作函数,我只修复了您在代码中遇到的小问题,比如OpenSSL::HMAC.hexdigest中的序列错误,并更改了base64编码函数,该函数没有添加“/n”比如base64.encode64(您的代码帮助我更快地存档)
请注意,这里我使用的是未编码的密钥,因此我没有解码密钥,因此这取决于您的实现。解密代码在哪里?@SergioTulentsev解密代码使用的是来自laravel的基本解密。就像这个解密($value);我不知道RoR的情况,但Laravel也基于我在这里写的结果@Kyslik让我检查一下链接。谢谢
def encrypt(value, key)
@cipher = OpenSSL::Cipher.new('aes-256-cbc')
@cipher.encrypt
@cipher.key = @key
iv = @cipher.random_iv
@cipher.iv = iv
encrypted = @cipher.update(PHP.serialize(value)) + @cipher.final
iv = Base64.strict_encode64(iv)
encrypted = Base64.strict_encode64(encrypted)
mac = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @key, iv + encrypted)
hash = { iv: iv, value: encrypted, mac: mac }
return Base64.strict_encode64(hash.to_json)
end