仅使用几个值解密.NET中的RSA数据
我正在使用RSA的Javascript实现,并在那里生成了我的密钥对。因此,我有仅使用几个值解密.NET中的RSA数据,.net,cryptography,rsa,.net,Cryptography,Rsa,我正在使用RSA的Javascript实现,并在那里生成了我的密钥对。因此,我有p,q,公共指数,公共模,私有指数和私有逆 如何使用.NET的rsacyptoserviceprovider仅使用这些值解密密文?.NET文档列出了其他三个字段DP、DQ和InverseQ,我不确定如何提供这些参数。似乎包含关于如何计算这些参数的说明,即 作为私钥一部分的值dp、dq和qInv计算如下: dp = d mod (p − 1) dq = d mod (q − 1) qInv = q^−1 mod p
p
,q
,公共指数,公共模,私有指数和私有逆
如何使用.NET的rsacyptoserviceprovider
仅使用这些值解密密文?.NET文档列出了其他三个字段DP
、DQ
和InverseQ
,我不确定如何提供这些参数。似乎包含关于如何计算这些参数的说明,即
作为私钥一部分的值dp、dq和qInv计算如下:
dp = d mod (p − 1)
dq = d mod (q − 1)
qInv = q^−1 mod p
RSA私钥(cf)有两种表示形式 第一个表示由一对(n,d)组成,第二个表示由一个五元组(p,q,dP,dQ,qInv)组成。公钥表示为(n,e)
- n是公模
- p和q是两个素数
- d是私有指数
- e是公众指数
- dP是p的中国剩余定理系数(e·dP)≡ 1(国防部(p-1)))
- dQ是q的CRT系数(e·dQ≡ 1(mod(q-1)))
- qInv是一个CRT系数,是一个小于p的正整数 q·钦夫≡ 1(模块p)
这两种私钥表示都是“完整的”,即您只需要其中一种就可以执行RSA计算。由于您拥有第一个表示所需的一切,因此只需在
rsaparters
实例上设置这些参数(即n、p、q、e、d)就足够了,而忽略其余的参数。Javascript密钥生成器创建一个28位整数的数组。在将它们转换为字节数组时,将它们扩展到32位并将它们表示为小尾端是正确的吗?为了安全起见,我会使用biginger#Parse(String)?