2012-12-08 4 views
2

Im는 CBC 모드에서 AES 265로 데이터를 암호화하는 루비 코드를 PHP로 변환하려고 시도하지만 작동하지 않는 경우 변환 된 PHP 코드는 null 문자열을 반환합니다. 여기에 내가 무엇을 가지고 :루비 to PHP AES

루비 :

require 'openssl' 

module AESCrypt 
    def self.encrypt(message, password) 
    Base64.encode64(self.encrypt_data(message.to_s.strip, self.key_digest(password), nil, "AES-256-CBC")) 
    end 

    def self.decrypt(message, password) 
    base64_decoded = Base64.decode64(message.to_s.strip) 
    self.decrypt_data(base64_decoded, self.key_digest(password), nil, "AES-256-CBC") 
    end 

    def self.key_digest(password) 
    OpenSSL::Digest::SHA256.new(password).digest 
    end 

def self.decrypt_data(encrypted_data, key, iv, cipher_type) 
    aes = OpenSSL::Cipher::Cipher.new(cipher_type) 
    aes.decrypt 
    aes.key = key 
    aes.iv = iv if iv != nil 
    aes.update(encrypted_data) + aes.final 
    end 

def self.encrypt_data(data, key, iv, cipher_type) 
    aes = OpenSSL::Cipher::Cipher.new(cipher_type) 
    aes.encrypt 
    aes.key = key 
    aes.iv = iv if iv != nil 
    aes.update(data) + aes.final  
    end 
end 

그리고 PHP 코드 :

echo base64_encode($encrypted_data = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, hash('sha256', 'p4ssw0rd'), 'hey', MCRYPT_MODE_CBC)); 

답변