相关疑难解决方法(0)

RSACryptoServiceProvider使用自己的公钥和私钥进行初始化

我正在尝试使用自己的公钥和私钥初始化RSACryptoServiceProvider.

据我所知,这样做的方法是调用构造函数

RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams);
Run Code Online (Sandbox Code Playgroud)

cspParams如上所示.但是,当我查看使用它的msdn示例时:http: //msdn.microsoft.com/en-us/library/ca5htw4f.aspx

我没有看到他们设置私钥或公钥的任何地方.仅使用KeyContainer.当我创建一个没有cspParam的RSACryptoServiceProvider时,它默认设置为仅使用公钥.当我检查类本身的PublicOnly变量并且它是一个只读变量时,我注意到了这一点.

我的问题是如何初始化这个类,然后设置我自己的私钥和公钥.服务器将使用私钥,客户端将拥有公钥.

我发现的是创建一个RSAParameter对象并将.Exponent和.Modulus参数分别设置为公共变量和私有变量.

但是我收到了"Missing Private Key"错误,因为我认为RSACryptoServiceProvider没有使用正确的构造函数进行初始化.

下面是我的一些代码.不要担心BigInteger类,它只是一个实验.即使我使用它,我也会得到同样的错误.

//Create a UnicodeEncoder to convert between byte array and string.
UnicodeEncoding ByteConverter = new UnicodeEncoding();

byte[] dataToEncrypt = ByteConverter.GetBytes(password);
byte[] encryptedData;
byte[] decryptedData;

//RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSAParameters rsap = new RSAParameters();

BigInteger n = new BigInteger("19579160939939334264971282204525611731944172893619019759209712156289528980860378672033164235760825723282900348193871051950190013953658941960463089031452404364269503721476236241284015792700835264262839734314564696723261501877759107784604657504350348081273959965406686529089170062268136253938904906635532824296510859016002105655690559115059267476786307037941751235763572931501055146976797606538425089134251611194500570922973015579287289778637105402129208324300035518642730384616767241853993887666288072512402523498267733725021939287517009966986976768028023180137546958580922532786773172365428677544232641888174470601681", 10);

BigInteger e = new BigInteger("65537", 10);

//rsap.Modulus = ByteConverter.GetBytes(publicKey);
rsap.Exponent = e.getBytes();
rsap.Modulus = n.getBytes();
  /*rsap.Exponent = ByteConverter.GetBytes(publicKey);
    rsap.D = ByteConverter.GetBytes(publicKey); …
Run Code Online (Sandbox Code Playgroud)

c# cryptography rsacryptoserviceprovider

8
推荐指数
1
解决办法
2万
查看次数