実現したいこと
RubyのコードをPHPのコードに置き換えたい。
発生している問題
PHPで、ruby側にある「cipher = OpenSSL::Cipher.new(CIPHER)」のように暗号オブジェクトを
生成したいです。
※PHPでOpenssl一覧を検索したのですが、暗号オブジェクトの生成する方法がみつけられませんでした。
該当のソースコード
Ruby
1 CIPHER = 'aes-256-cbc'.freeze 2 DIGEST = 'sha256'.freeze 3 PASS = 'password'.freeze 4 5 # @param [String] str / Encryption target string 6 # @return [String] / Encrypted string 7 def encrypt(str) 8 salt = OpenSSL::Random.random_bytes(8) 9# ここから 10 cipher = OpenSSL::Cipher.new(CIPHER) 11 cipher.encrypt 12 cipher.key, cipher.iv = key_iv(cipher, salt) 13 14#ここまでをPHPの置き換え方がわからないです。 15 Base64.encode64('Salted__' << salt << cipher.update(str) << cipher.final) 16 end 17 18 # @note Generation of key and iv 19 private def key_iv(cipher, salt) 20 key_iv_pair = OpenSSL::PKCS5.pbkdf2_hmac(PASS, salt, 1000, cipher.key_len + cipher.iv_len, DIGEST) 21 [key_iv_pair.slice(0, cipher.key_len), key_iv_pair.slice(cipher.key_len, cipher.iv_len)] 22 end
const CIPHER = 'aes-256-cbc'; const DIGEST = 'sha256'; const PASS = 'password'; // @param [String] str / Encryption target string // @return [String] / Encrypted string function encrypt($str){ $salt = openssl_random_pseudo_bytes(8); # ここから※ここ暗号化のサイトを参考にしましたがrubyと方式が違うようです。 $key_data = self::password.$salt; $raw_key = md5($key_data, true); $iv_data = $raw_key.self::password.$salt; $iv = md5($iv_data, true); #ここまでをPHPの置き換え方がわからないです。 // 暗号化 $encrypted = openssl_encrypt($str, self::CIPHER, $raw_key, OPENSSL_RAW_DATA, $iv); return ( base64_encode("Salted__".$salt.$encrypted) ); }
同じ動作にしたいのですがRuby、PHPともに専門でない為置き換えるメソッド等が見つけられなかったの
ご教示ください。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー