非对称加密算法的相关问题

该页面主要是声明以及简述下非对称加密算法的问题,主要要说明的是以下两句话:

公钥用来加密,私钥用来解谜;私钥用来签名,公钥用来验证;不可逆。

1、公钥用来加密,私钥用来解谜:

1.1 RSA带来的误解

假如,学RSA的非对称加密算法的话,会带来一个疑问,公钥和私钥其实是可以互换的,私钥也可以用来加密,然后用公钥用来解谜;

对于非对称加密来说,这是不对的,虽然,严格的按照RSA的数学公式的话,这两个确实可以互换;

但是,按照非对称加密的思想的话,必须是严格按照 “公钥用来加密,私钥用来解谜”,

相关问题,可以看这篇文章:RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密?

1.2 例如ECC

RSA后来的一些非对称加密算法,其实大部分都符合上面的规则的,最好的例子就是ECC;

(1)首先,ECC用私钥生成公钥,所以,假如把“私钥”公布,把“公钥”作为解谜的保存,这就是没意义的;

(2)ECC算法中,私钥是一个超大的整数k,而公钥是椭圆曲线上的一个点K,还有一个公开的基点G,以及选取的椭圆曲线Ep(a,b),

加密过程,用公钥点K、G和Ep,能够加密密文,得到一个椭圆曲线上的点M,然后通过公式计算出两个点C1、C2;

而通过C1、C2,以及私钥k,能过计算获得M。但是假如用私钥k,用来加密,公钥K是无法解谜的。

所以,ECC才是标准符合非对称加密算法的思想的。

2、私钥用来签名,公钥用来验证:

这个,其实是非常简单的,不用讲解,因为签名就是为了证明该消息是我发送的,大家可以用公钥来验证,是不是我发送的。

ECC算法的NodeJS库:https://www.npmjs.com/package/eccrypto

你可能感兴趣的:(非对称加密算法的相关问题)