C# 三重加密RUBY

C# 三重加密RUBY,c#,ruby,openssl,3des,ecb,C#,Ruby,Openssl,3des,Ecb,我有一个.NETC#中的示例代码,需要将其转换为RUBY public static string Encrypt(string pstrText) { byte[] keyArray; byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(pstrText); MD5CryptoServiceProvider hashmd5 = new MD5Cry

我有一个.NETC#中的示例代码,需要将其转换为RUBY

 public static string Encrypt(string pstrText)
        {
            byte[] keyArray;
            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(pstrText);
                MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
                keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(secKey));
                hashmd5.Clear();
            TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
            tdes.Key = keyArray;
            tdes.Mode = CipherMode.ECB;
            tdes.Padding = PaddingMode.PKCS7;
            ICryptoTransform cTransform = tdes.CreateEncryptor();
            byte[] resultArray =cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            tdes.Clear();
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }
我尝试过使用OPENSSL:CIPHER,到目前为止还没有成功-

def encrypt data
secret = "******************"
md5 = Digest::MD5.hexdigest(secret)
des = OpenSSL::Cipher::Cipher.new 'DES-EDE3'
des.encrypt
des.key = md5
update_value = des.update(data)
up_final = update_value + des.final
puts Base64.encode64(up_final).gsub(/\n/, "")
end

C#和RUBY中的结果不匹配。我哪里出错了?

您能否为这两种方法提供通用输入和不同输出,以帮助了解预期行为?从我在代码中看到的情况来看,PKCS7没有在Ruby版本的实现中配置,也许可以尝试指定填充。你有没有用过另一个秘密?另外,Ruby默认使用PKCS7填充,因此您的问题不应该与此相关。抱歉,更正-公共输入-“Hello”C#Output-“w4yjgrjp4=”Ruby Output-“tTTahnSXXW8=”。我知道C#输出是正确的。好的,我认为所有配置看起来都是正确的。因此,您需要进行一些调试。我对
Digest::MD5.hexdigest(secret)
“28306617aacbf026bf9a4e0783b50ff9”
)与
hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(secKey))
(你能在这里发布这行的返回值吗?)