gpt4 book ai didi

php - 将此函数从 php 转换为 ruby

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:18 25 4
gpt4 key购买 nike

我有这个函数,我试图将它转换为 ruby​​ 1.9.3(用于 ruby​​ on rails 3.2.13),但我无法获得与这个 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,

这是我用 ruby​​ 得到的:

DTilW98pHOep/5qc7H+iBYPdbFNZGKWW0c0XFo5YfrWfqKLPzzLTygRQAiFY whVX8+I0FYAOg3+QqyH0jpcGaFbSVQefU7gDIfT+tHKqSCKmLZwVQas5SQ3j o+m8V+iv/ZgGuHD0U8dNZwO4zkqJAPMPJFvdOeHJVxb77lCBtNU=

也许我需要删除 .pem 文件中的页眉和页脚?

最佳答案

为了方便:

这已经为 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)

关于php - 将此函数从 php 转换为 ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18494290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com