看看MSDN examples for TripleDESCryptoServiceProvider,别忘了为你的实例设置正确的Mode、Key、IV和Padding属性:
var provider = new System.Security.Cryptography.TripleDESCryptoServiceProvider();
provider.Mode = CipherMode.CBC;
provider.Key = new byte[] { 0x3B, 0x38, 0x8F, 0x0E, 0xFD, 0xA7, 0x2A, 0xF1, 0x6D, 0xBA, 0x73, 0x4F, 0xE9, 0x70, 0x4A, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
provider.IV = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
provider.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
您还应该在命令中添加 -p 选项,以便查看 OpenSSL 用于加密的实际密钥:
$ openssl enc -des-ede3-cbc -K 3B388F0EFDA72AF16DBA734FE9704AF7 -iv 0000000000000000 -in file.txt -out file.enc -nosalt -p
key=3B388F0EFDA72AF16DBA734FE9704AF70000000000000000
iv =0000000000000000
您在命令行中传递的密钥太短,因此 OpenSSL 会在其上附加零,您需要在 C# 代码中使用完全相同的密钥。