Tôi đang cố gắng sao chép hành vi Convert.ToBase64String() trong Ruby.C# để mã hóa Ruby sha1 base64
Đây là mã # C của tôi:
var sha1 = new SHA1CryptoServiceProvider();
var passwordBytes = Encoding.UTF8.GetBytes("password");
var passwordHash = sha1.ComputeHash(passwordBytes);
return Convert.ToBase64String(passwordHash); // returns "W6ph5Mm5Pz8GgiULbPgzG37mj9g="
Khi tôi cố gắng điều tương tự trong Ruby, tôi nhận được một chuỗi base64 khác nhau cho các băm SHA1 cùng:
require 'digest/sha1'
require 'base64'
sha1 = Digest::SHA1.hexdigest('password')
# sha1 = 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
base64 = Base64.strict_encode64(sha1)
# base64 = "NWJhYTYxZTRjOWI5M2YzZjA2ODIyNTBiNmNmODMzMWI3ZWU2OGZkOA=="
tôi xác minh trong debugger mảng C# passwordBytes
phù hợp với giá trị sha1
trong ví dụ Ruby. Có một cách đặc biệt tôi cần phải sử dụng Base64 trong Ruby để có được cùng một chuỗi mã C# sản xuất?