我正在寻找一种方法来加密 C# 上的一些数据,在 .NET 3.5 上运行。加密必须使用非对称算法完成,并且必须使用私钥进行加密。
.NET框架自带的 RSACryptoServiceProvider
类只提供公钥加密,这样就出局了;而且,尽管我确实寻找了一些库来做到这一点,但我找不到任何可以解决不依赖于System.Numerics.BigInteger
类的问题的库,即 .NET 4.0(或者可能是 4.5,但仍然没有在 3.5 中工作)。
理想情况下,我想要的是能够使用一个可以完成这项工作的库,或者能够编写(无需从头开始重写一些算法实现)一个执行以下操作的类:
public class SomeAlgorithm {
public SomeAlgorithm (string xmlKey) {
// something
}
public byte[] encrypt (byte[] data, bool usePrivateKey) {
// note that data should be able to take an arbitrarily large size
// I don't expect it to become any larger than 300 or 400 bytes, but
// the implementation should be able to handle arbitrary-size data
// do something
}
public byte[] decrypt (byte[] encryptedData, bool usePrivateKey) {
// the same constraints apply to encryptedData here
// do something
}
}
请注意,我不是在寻找签名,我实际上需要用私钥加密所有数据。我知道这不是使用算法的正常方式,以及能够使用公钥解密数据的安全隐患。在这种特殊情况下,基于签名和对称加密的实现不会有用。这里的要求有点离奇,但最终,我实际上需要这样做。我注意到这里的类似问题收到了主要的负面回应,实际上根本没有解决问题,所以我添加了这个免责声明。