C# RSA.ImportParameters()中的加密异常-特殊1024密钥中的错误数据
我们有一个C#/.Net 4.0应用程序,它从Web服务中接收的Base64中的字符串导入RSA私钥 该应用程序适用于1024位的RSA密钥,但不适用于特殊类型的RSA私钥(约占密钥的1%) 以下是字节长度: 工作键:C# RSA.ImportParameters()中的加密异常-特殊1024密钥中的错误数据,c#,rsa,private-key,cryptographicexception,C#,Rsa,Private Key,Cryptographicexception,我们有一个C#/.Net 4.0应用程序,它从Web服务中接收的Base64中的字符串导入RSA私钥 该应用程序适用于1024位的RSA密钥,但不适用于特殊类型的RSA私钥(约占密钥的1%) 以下是字节长度: 工作键: 模数=>128字节 指数=>3字节 D=>128字节 P=>64字节 Q=>64字节 DP=>64字节 DQ=>64字节 IQ=>64字节 不工作键: 模数=>128字节 指数=>3字节 D=>127字节 P=>64字节 Q=>64字节 DP=>64字节 DQ=>64字节
- 模数=>128字节
- 指数=>3字节
- D=>128字节
- P=>64字节
- Q=>64字节
- DP=>64字节
- DQ=>64字节
- IQ=>64字节
- 模数=>128字节
- 指数=>3字节
- D=>127字节
- P=>64字节
- Q=>64字节
- DP=>64字节
- DQ=>64字节
- IQ=>64字节
解决此问题应包括哪些内容?
rsacyptoserviceprovider
对数据长度有一些假设,即:
- 模数:任意偶数大小,我们称之为长度
n
- 指数:(
Yep。这通常是因为
在ASN.1中存储为D
,而ASN.1编码规则规定必须以尽可能短的形式对整数进行编码。因此,在整数<所需大小的情况下,很可能是因为整数的零不重要。INTEGER
byte[] newD = new byte[modulus.Length]; Buffer.BlockCopy(d, 0, newD, newD.Length - d.Length, d.Length);