我不是加密专家,但据我了解,3DES 是一种对称加密算法,这意味着它不使用公钥/私钥。
尽管如此,我的任务是使用公钥(特别是 .CER 文件)加密数据。如果您忽略整个对称/非对称,我应该能够将公钥中的密钥数据用作 TripleDES 密钥。但是,我很难从 .CER 文件中提取关键字节。这是目前的代码..
TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
X509Certificate2 cert = new X509Certificate2(@"c:\temp\whatever.cer");
cryptoProvider.Key = cert.PublicKey.Key.
我能找到的从证书中提取原始密钥字节的最简单方法是 ToXmlString(bool),然后对返回的字符串进行一些 hacky 子字符串化。然而,这看起来太老套了,我觉得我一定错过了一种更简单、更明显的方法。
我是否缺少使用 .cer 文件向 C# 3DES 加密类提供密钥数据的更简单方法,或者将其从证书 xml 字符串中破解出来真的是解决此问题的最佳方法吗?