我有一个使用RSACryptoServiceProvider的C#应用程序,从XML中加载公钥,然后加密散列值并保存。
在另一个应用程序中,我加载了私钥,然后能够正确解密信息。
问题是,我想快速测试一下是否一切正常。
根据MSDN,
RSA的安全性源于公钥{e, n}无法直接计算d,也无法通过将n分解为p和q来直接计算d。因此,与d、p或q相关的密钥部分必须保密。
因此,私钥的最重要参数是指数和质数(D、P、Q),这些参数必须保密。
我的测试是在加载私钥之前修改它。首先,我更改了第一个质数中的一个字符,得到了一个错误的密钥。当我只修改第二个质数中的一个字符时,也出现了同样的情况。但是,当我修改指数中的一个字符时,仍能正确解码。所以我的问题是,哪些内容可以从私钥中更改而仍能正常解码,哪些内容是必不可少的?