gpt4 book ai didi

php - 如何将 128 CFB mcrypt 转换为 Ruby?

转载 作者:可可西里 更新时间:2023-11-01 14:01:56 25 4
gpt4 key购买 nike

我需要与加密请求和答案的 PHP API 进行交换。在我这边,我在 rails 4.0.0 (ruby 2.0) 中,我无法让它工作。

我已经阅读了很多关于这个主题的答案,并试图理解 mcrypt 是如何工作的,例如http://www.chilkatsoft.com/p/php_aes.asp ,但没有成功。我仍然无法从 PHP 解密加密的内容或加密 PHP 可以解密的内容

你能帮我看看我做错了什么吗?

PHP代码:

$secretKey = "1234567891234567";
$encrypt = urlencode( base64_encode( mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
md5($secretKey),
$cleartext,
MCRYPT_MODE_CFB,
$secretKey
) ) );

$input = urldecode($input);
$decrypt = mcrypt_decrypt( MCRYPT_RIJNDAEL_128,
md5($secretKey),
base64_decode($input),
MCRYPT_MODE_CFB,
$secretKey );

ruby 代码:

def self.encode(params = {})
cipher = OpenSSL::Cipher::AES.new(256, :CFB)
cipher.encrypt
cipher.key = Digest::MD5.hexdigest("1234567891234567")
cipher.iv = "1234567891234567"
encrypted = cipher.update(params.to_query) + cipher.final

CGI.escape(Base64.strict_encode64(encrypted))
end

def self.decode(answer)
decrypted = Base64.decode64(CGI.unescape(answer))

decipher = OpenSSL::Cipher::AES.new(256, :CFB)
decipher.decrypt
decipher.key = Digest::MD5.hexdigest("1234567891234567")
decipher.iv = "1234567891234567"
decoded = decipher.update(decrypted) + decipher.final
end

最佳答案

您必须在 PHP 代码中使用 'ncfb' 而不是 MCRYPT_MODE_CFB。 PHP 默认为 8 位反馈而不是完整 block 大小的反馈。

或者,您可以指定 :CFB8 以在 Ruby 中与 PHP 兼容。这是我在阅读 OpenSSL 文档中关于 CFB 的文档后猜到的。

非常感谢this Q/A on IT security我之所以找到它,是因为我知道我在寻找什么。

关于php - 如何将 128 CFB mcrypt 转换为 Ruby?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388823/

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