我需要在 C# 应用程序和微控制器 (pic32mx795) 之间实现加密。我遇到的问题是生成我正在使用 RSACryptoServiceProvider 的公钥和私钥对,但我只能获取密钥属性而不是完整的公钥。
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSAParameters RSAKeyInfo = RSA.ExportParameters(false);
我无法为微控制器提供关键参数,因为它只需要密钥(作为字节)。有一个库可以做到这一点,但它只能在 2012 年 11 月的某个时候提供(SW300055)。我正在使用 SW300052 库对微控制器执行加密(密钥大小限制为 256 位)。
我还在这个线程中尝试了 bouncycastle 建议(生成密钥并在文本框中显示它们)。它以 PEM 格式保存密钥。据我了解,密钥以 base64 格式保存。我已将密钥长度指定为 256 位,但是当将公钥转换回字节时,它是 62 字节。
byte[] encodedDataAsBytes = Convert.FromBase64String (publicKeyString);
我还查看了 Microsoft 的强名称工具 (sn.exe),但它支持的最小密钥大小为 384 位。
有什么方法可以生成公钥对并使用 c#(或任何其他工具)以纯文本/字节形式获取公钥?我是否最好使用对称密钥加密来加密会话密钥?