编辑
2025-01-22
工作知识
0
请注意,本文编写于 135 天前,最后修改于 135 天前,其中某些信息可能已经过时。

目录

一、什么是非对称加密
二、什么是RSA
2.1 生成公/私钥
2.2 使用公钥加密
2.3 使用私钥解密

根据防破解之-完整性校验我们拿到了固定的摘要,我们需要针对这个摘要进行加密,否则其他人可以修改#这个摘要信息,将已经破解的文件的摘要放在指定节上。

一、什么是非对称加密

了解非对称加密的时候,我们需要先知道什么是对称加密,对称加密指的加密和解密时使用的密钥都是同一个,是“对称”的。图个网络图片例子如下:

image.png

这里我们虽然发现对称加密能够做到加密策略,但是如果对称密钥泄露,那加密也就被破解,也就是如何把密钥安全地传递给对方,这里非对称加密就出现了。

对于非对称加密,它有两个密钥,一个叫公钥,一个叫私钥。两个密钥是不同的,“不对称”,公钥可以公开给任何人使用,而私钥必须严格保密。

公钥和私钥有单向性,虽然都可以用来加密解密,但公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密。

这样,非对称加密可以解决密钥被泄露的问题,也就是我们的所有的内容通过私钥加密,而我发布的公钥仅仅用来解密我私钥加密的内容。因为我私钥拿在手上,不会释放,所以没有办法破解密文

二、什么是RSA

RSA是比较著名的非对称加密,它的安全性基于“整数分解”的数学难题,使用两个超大素数的乘积作为生成密钥的材料,想要从公钥推算出私钥是非常困难的,有兴趣了解rsa加密的可以查看此文章:RSA

我们可以实践如下:

2.1 生成公/私钥

为了更安全,这里选择2048长度

openssl genrsa -out rsa_private_key.pem 2048 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

2.2 使用公钥加密

我们使用文件plaintext.bin作为待加密文件,ciphertext.bin是密文文件

openssl rsautl -encrypt -pubin -inkey rsa_public_key.pem -in plaintext.bin -out ciphertext.bin

2.3 使用私钥解密

openssl rsautl -decrypt -inkey rsa_private_key.pem -in ciphertext.bin -out out_plaintext.bin

此时我们可以发现"plaintext.bin"和"out_plaintext.bin"是完全相等的。

至此,我们可以在sha256的基础上,通过非对称加密将摘要信息进行加密,这样对方无法破解我们的摘要信息。从而保证了摘要信息被篡改的风险。