基于质数的加密算法难以被破解原理& RSA 公钥/私钥都能进行加密原理 简介篇[算法安全放心大胆用]
扩展思考
为什么jwt我们用的是私钥加密。
而某些数据传递用公钥加密。
RSA 加密科普
一 质数的特性
大家刚入门编程的时候,可能会接触到写一个代码实现求质数标。如果慢一点的代码实现就是从1一直除到自身,快一点的算法会对被除数做限制,减少一些没有比较的计算,如果还想进一步的快,那么就是运行时存储质数表。以缩小被除数目标。但是不可否认的是无论如何优化,大家实现的代码的核心仍然是依次尝试是否可以被其他质数整除。
这就引申出当前质数的特点。如果想要判断一个数字是否可以被整除,那么只能通过一个一个计算才能得到结果。同理,如果你使用两个非常大的质数进行了相乘,那么得到的这个数,如果让其他人反向求是哪几个质数想乘所得,那么也只能一个一个计算。
举个例子。
例如 我有两个质数。
100000000000000871 * 1000000000000001267 = x
那么你至少需要从 1 一直遍历到 100000000000000871 ,才能知道 x 的一个质数。
这就带来了计算机中的一个好处。我的加密成本远远低于破解成本,因为破解方除了不停的尝试
,没有其他的方法可以对我的结果进行因式分解。(至少目前,基于质数的加密算法等价于现阶段因式分解难度)
二 RSA 加密简单介绍
如果是数学/计算机相关专业的同学,大学期间可能接触过一门课密码学
,内容中就设计到了关于一些使用质数加密的算法,其中也包含我们这里直接引用 RSA 加密公式。
其实按照公式中的介绍和介绍一中的质数特点,就可以看出 rsa 的加密公式和解密公式是不一样的,并且用到的参数也是不一样的。
加密用到 e 和 n,但是解密用到的却是 d。 (这里感兴趣的同学,可以试一下,如果你有一个长度1000位的质数需要花多久才能计算得到结果)
RSA 公钥/私钥 都能加解密吗,jwt选择私钥加密的原因是什么。
用过 jwt 配合 rsa 的同学看到这可能联想到。jwt是用私钥进行了加密,而不是公钥,同时验证的时候用的是公钥。这不是和上面的反过来么。
其实不然,首先 jwt 的 rsa 应用场景和数据加密是不一样的。首先第一点就是jwt是可以base64看到明文的。
那么就引来以下问题了,jwt base64encode都是明文了,那jwt安全吗?那 jwt 中使用 rsa 的目的是什么呢?
这里说明答案:1 jwt是相对安全的,2 rsa 就是为了 jwt 的安全而配合使用的。
jwt相对安全的前提是不要把敏感信息存储在jwt,因为jwt本身是base64明文存储的。第二点是rsa在jwt的使用中是作为验证算法以保证jwt不被伪造的。 这种情况下,rsa 使用公钥并不像上面二所说的对加密数据进行了反解,而是进行了验证。私钥被令牌下发者保存着,公钥则可以发给各个集群由他们自己去验证(只是相对安全,可以选择在不泄露的前提下,每个集群各自存储公钥验证jwt是否被伪造,而不用用唯一集群去验证)。这个过程中,你用rsa公钥只做了一件事情,就是验证(only one)。
所以至此关于 质数/rsa/公钥加密/私钥加密+jwt 的组合简单介绍就结束了,感兴趣的同学也可以自己动手测试以下。
以下是gpt生成的相关介绍,感兴趣的同学也可以参考以下gpt的回复,我大致看了下gpt回复的没有什么问题。
RSA公钥和私钥都能加密,但它们在加密和解密过程中的作用有所不同,主要体现在以下几个方面:
加密与解密
- 公钥加密,私钥解密:这是最常见的使用方式。当发送方想要安全地将信息发送给接收方时,可以使用接收方的公钥对信息进行加密。由于公钥是公开的,任何人都可以获取并使用它进行加密,但只有持有对应私钥的接收方才能解密该信息,从而保证了信息的安全性。
- 私钥加密,公钥解密:这种方式通常用于数字签名。私钥是私有的,只有持有者才能使用它进行加密(即签名)。当私钥持有者使用私钥对信息(如文件、消息等)进行加密(签名)后,任何人都可以使用对应的公钥进行解密(验签),以验证该信息确实是由私钥持有者发出的,且信息在传输过程中未被篡改。
安全性与用途
- 公钥加密的安全性:由于公钥是公开的,任何人都可以使用它进行加密,但只有私钥持有者才能解密,这保证了信息在传输过程中的安全性。即使信息被截获,没有私钥也无法解密,从而保护了信息的机密性。
- 私钥加密的用途:私钥加密(签名)的主要目的是验证信息的来源和完整性。通过私钥签名,接收方可以确信信息是由私钥持有者发出的,并且信息在传输过程中未被篡改。这种机制在数字证书、软件分发、电子邮件安全等领域有着广泛的应用。
总结
RSA公钥和私钥都能加密,但它们的用途和安全性有所不同。公钥主要用于加密信息以保证传输过程中的安全性,而私钥则主要用于加密(签名)信息以验证其来源和完整性。这两种方式共同构成了RSA加密算法的核心,为网络通信和数据传输提供了强有力的安全保障。
本作品采用《CC 协议》,转载必须注明作者和本文链接
你这样发帖,我们就不得不这么对你了 分享:分享如何屏蔽不想看「TA」的文章用户