2013-08-28 3 views
3

У меня есть эта функция, и я попытался преобразовать ее в ruby ​​1.9.3 (для использования на ruby ​​on rails 3.2.13), но я не могу получить тот же хеш, что и эта функция php возвращается.Преобразование этой функции из php в ruby ​​

это то, что я использую в рубине до сих пор:

keypair = OpenSSL::PKey::RSA.new(File.open(Rails.root.join('sec', 'private_key.pem'))) 
@encrypted_string = keypair.sign(OpenSSL::Digest::MD5.new, @data) 
@encrypted_string = Base64.encode64(@encrypted_string) 

Это функция в PHP:

function SignData($text, $privateKeyFile) { 

$private_cert = $privateKeyFile;  
$f = fopen($private_cert,"r"); 

if($f) 
    $private_key = fread($f, filesize($private_cert));  
else 
    return "";  
fclose($f);  
$private_key = openssl_get_privatekey($private_key);   
if(openssl_private_encrypt(md5($text), $crypt_text, $private_key)) 
{  
    base64_url_encode($crypt_text) . "\n"; 
} 
    return ""; 
} 

Это хэш возвращается в PHP:

xJCl3YZVEkXjt_pTPHl9FjpebpDcdMtgZzGFo0LsO_PFyQ8lwdUpKxR_XhK1DGfywVr4 -hPxtDqSOHMcp7fM-eYK5GqGVasUh80qRiVLjw6Zeh4NPCk1qxsSm4X3gl0sv13dBb5FvDwV6QcLyo7vyNweqUH_Cpq_WmWrNY3px5Y,

Это один я рубина:

DTilW98pHOep/5qc7H + iBYPdbFNZGKWW0c0XFo5YfrWfqKLPzzLTygRQAiFY whVX8 + I0FYAOg3 + QqyH0jpcGaFbSVQefU7gDIfT + tHKqSCKmLZwVQas5SQ3j о + m8V + IV/ZgGuHD0U8dNZwO4zkqJAPMPJFvdOeHJVxb77lCBtNU =

Может быть Мне нужно удалить верхний и нижний колонтитулы в файле .pem?

+7

Вы должны опубликовать свой раздел «решить» в качестве ответа и принять его самостоятельно, таким образом, этот вопрос не будете перечисленные как неотвеченные –

ответ

1

Для: удобств

Это сделало это для OP:

private_key_file = File.open(Rails.root.join('sec', 'private_key.pem')) 
private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file)) 
digest = Digest::MD5.hexdigest(@data) 
@encrypted_string = private_key.private_encrypt(digest) 
@encrypted_string = Base64.encode64(@encrypted_string) 
Смежные вопросы