Hem*_*ant 51 .net encryption cryptography encryption-asymmetric
通过阅读各种材料,无论我理解什么,公钥 - 私钥对都是不对称加密的基础,也是选择2个素数(大致是你的私钥)并乘以它们(大致是你的公钥)的东西,我如果您知道私钥,则可能会生成公钥.这是正确的还是我错了什么?
[编辑]
让我更加困惑的是,只能使用私钥(使用.NET类RSACryptoServiceProvider)将RSA密钥序列化为XML .不确定这个限制是否有意!
vaa*_*aab 48
在大多数非对称加密系统实现中,唯一确保的事实是您无法从公钥中找到私钥.反过来说,在大多数情况下从私钥中找到公钥是微不足道的.
例如,在RSA中,您可以使用以下私钥创建公钥:
openssl rsa -in private.pem -pubout -out public.pem
Run Code Online (Sandbox Code Playgroud)
误导的是术语:"私钥"指的是2个不同的概念,无论你是在谈论理论,还是在谈论实际实现:
0x10001默认情况下为openssl,虽然可以更改,但强烈建议仅遵循非常具体的值) .因此,从私钥中推导出公钥(e,n)是微不足道的,原因不止一个.sle*_*ske 34
这取决于加密系统.
在RSA中,我们(引用维基百科):
公钥由模数n和公共(或加密)指数e组成.私钥由模数n和私有(或解密)指数d组成,必须保密.
现在,如果我们有n和d(私钥),我们只缺少公钥的e.但是e通常相当小(少于三位数),甚至是固定的(常见值为65537).在这些情况下,获取公钥是微不足道的.
对于Elliptic Curve Diffie-Hellman,私钥是d,而公钥dG(G也是公共的),所以它也是微不足道的.
这取决于算法,你的意思是"私钥".
RSA私钥通常存储在"中国剩余定理"表中.例如,RSAPrivateKeyPKCS#1中定义的结构以及许多其他加密标准重用的结构采用这种形式.这种形式包括两个秘密数字通常表示p和q,从该欧拉被计算.使用totient和private exponent,可以快速计算公共指数.
在任何情况下,大多数RSA密钥对使用65537作为公共指数,并且模数总是作为私钥的一部分携带.
对于私钥是什么存在误解。私钥只是 (d,n) 对,仅此一点,就不可能从它生成公钥,除非您可以假设公共指数为 65537,几乎所有 rsa 密钥都是这种情况。
如果出于某种原因,公共指数是一个较大的数字,则您无法从私有密钥创建公共密钥。
也就是说,作为“私钥”存储到 pem 文件的值不仅仅是私钥,还包含素数因子(除其他外),因此,很容易从中生成公钥。
在任何公钥加密系统中,公钥在数学上都与私钥相关。这很简单。
公钥是在生成时从私钥派生出来的,并且在将来的任何时候使用私钥都可以轻松地重新派生公钥。
走另一条路是行不通的。给定公钥并不容易推导出私钥。这就是为什么我们可以安全地与其他人共享公钥。如果你有足够的时间/CPU 周期,你可以暴力破解它,但等待对密钥的数学攻击可能更容易。
| 归档时间: |
|
| 查看次数: |
25797 次 |
| 最近记录: |