2017-09-14 16 views
1
私はこのような値を暗号化するために、フロントエンドで「暗号jsの」パッケージを使用しています

CryptoJS AESの暗号化と同等

cipher = OpenSSL::Cipher::Cipher.new('aes-128-cbc')  
cipher.encrypt  
cipher.key = 'my_secret_key'  
text = cipher.update("1-2345-689") + cipher.final  
encrypted_value = Base64.strict_encode64(text) 

==> 'pBTaRw/fZTRkrw4THDCGLQ==' 
:私はこのようなRailsのOpenSSLを使用していますバックエンドで

import CryptoJS from 'crypto-js'; 
var value_to_encrypt = '1-2345-689' 
var encrypted_value = CryptoJS.AES.encrypt(value_to_encrypt, 'my_secret_key').toString() 

==> 'U2FsdGVkX1/JWm47UWAgxMKyf2qC6EukAtk0pZbW3pk=' 

私はすでに多くのレコードを同じ暗号化方式で保存しているため、ソリューションはほとんど見つかりませんでしたが、フロントエンドで128bit鍵とivを暗号化に使用することを提案しました。

誰もがその方法と同等のレールを提案できますか?

答えて

0

キー&を使用して暗号化し、使用せずに復号化することはできません。逆も同様です。私は古い暗号化されたデータを解読し、ivとキーを使ってそれを再度暗号化しなければならなかった。フロントエンド(reactJs)において

:バックエンド(Ruby on Railsの)において

import CryptoJS from 'crypto-js'; 

const iv = CryptoJS.enc.Base64.parse(INITIALIZATION_VECTOR) 
const key = CryptoJS.enc.Hex.parse(ENCRYPTION_KEY) 

encrypted_value = CryptoJS.AES.encrypt(input, key, {mode: CryptoJS.mode.CBC, iv : iv}).toString() 

decrypted_value = CryptoJS.AES.decrypt(input, key, {mode: CryptoJS.mode.CBC, iv : iv}).toString(CryptoJS.enc.Utf8) 

iv = Base64.decode64(INITIALIZATION_VECTOR) 
key = [ENCRYPTION_KEY].pack("H*") 
cipher = OpenSSL::Cipher::Cipher.new('aes-128-cbc') 
cipher.encrypt 
cipher.key = key 
cipher.iv = iv 
text = cipher.update(plain_text) + cipher.final 
encrypted_text = Base64.strict_encode64(text)