2017-05-17 8 views
0

お客様のために、LaravelアプリケーションをRubyアプリケーションに移行しています。ルビの世界で解読したいデータがデータベースに格納されています。Laravel Crypt :: decrypt ruby​​への移行

これは、データを暗号化するために使用されたlaravelの一部です:ルビーためにデータをインポートする際https://laravel.com/docs/5.0/encryption

は、今、私たちはデータを復号化することができますカウンターパートが必要です。私はこのようなデータを復号化することができたlaravelコンソールで

>>> Crypt::decrypt('eyJpdiI6ImZyek9ZTjJNSW5ZYlhSa2ZYUldVbEE9PSIsInZhbHVlIjoia20zMTRLWEpCdXM2K05DZDBHSlE5SDlcL2pYVXk5aE5RWWR3dHFQT1dGQzA9IiwibWFjIjoiZWZlNGE3NTRhMDDlNzk2MjhlYjI1Mzc1NGNiYmRjNDMwZjM1NzdiMzkyZTU4ZjA4ZDNkMGE0YjUyOTBjMDAzOCJA') 
=> "123123123123" 

私はlaravelの専門家ではないが、app.phpファイルに秘密鍵が設定されました。だから私は何とか解読関数に渡すことができる必要があります。

目的は、laravelのパスワードと暗号化キーを取得し、復号化された値を返すruby関数を持つことです。

ありがとうございます!

+0

Laravel復号化を実行するコマンドラインスクリプトを作成してから、それを実行してrubyシステムコマンドを実行して出力を取得する方が簡単かもしれません。特にそれは一回限りの仕事だからです。 –

答えて

2

ほとんどの標準ライブラリを使用して、LaravelのEncrypter :: decryptメソッドをリバースエンジニアリングすることができます。 Laravelは明示的に指示されない限り、データを暗号化する前にデータをシリアル化します。これは、暗号化された文字列を使用する前に、その文字列をシリアル化解除しようとしていることを意味します。アプリキーを設定するとき

require 'base64' 
require 'openssl' 
require 'json' 
require 'php_serialize' 

def lara_decrypt(encryptedString, appKey) 
    data = JSON.parse(Base64::decode64(encryptedString)) 

    decipher = OpenSSL::Cipher.new('aes-256-cbc') 
    decipher.decrypt 
    decipher.key = Base64::decode64(appKey) 
    decipher.iv = Base64::decode64(data['iv']) 
    decrypted = decipher.update(Base64::decode64(data['value'])) + decipher.final 
    begin 
     PHP.unserialize(decrypted) 
    rescue 
     decrypted 
    end 
end 

も(それがあるのならば)、それを最初から base64:をドロップするようにしてください。

+0

私の男!この作品はおかげでありがとう! – Hendrik