gpt4 book ai didi

C# 到 Ruby sha1 base64 编码

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:10 26 4
gpt4 key购买 nike

我正在尝试在 Ruby 中复制 Convert.ToBase64String() 行为。

这是我的 C# 代码:

var sha1 = new SHA1CryptoServiceProvider();
var passwordBytes = Encoding.UTF8.GetBytes("password");
var passwordHash = sha1.ComputeHash(passwordBytes);
return Convert.ToBase64String(passwordHash); // returns "W6ph5Mm5Pz8GgiULbPgzG37mj9g="

当我在 Ruby 中尝试同样的事情时,我得到了相同 sha1 散列的不同 base64 字符串:

require 'digest/sha1'
require 'base64'
sha1 = Digest::SHA1.hexdigest('password')
# sha1 = 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
base64 = Base64.strict_encode64(sha1)
# base64 = "NWJhYTYxZTRjOWI5M2YzZjA2ODIyNTBiNmNmODMzMWI3ZWU2OGZkOA=="

我在调试器中验证了 C# passwordBytes 字节数组与 Ruby 示例中的 sha1 值匹配。是否有一种特殊的方法需要在 Ruby 中使用 Base64 来获取与 C# 代码生成的字符串相同的字符串?

最佳答案

您正在对字符串 "5baa61..." 进行 base64 编码,而不是 "\x5b\xaa\x61..."

hexdigest 更改为 digest:

sha1 = Digest::SHA1.digest('password')
base64 = Base64.strict_encode64(sha1)

关于C# 到 Ruby sha1 base64 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209750/

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