文/九歌
    RSA算法公钥、私钥及数字签名加密流程分步解析 - 图1
    RSA算法发明者:Rivest、Shamir 和 Adleman

    1977年,三位数学家Rivest、Shamir 和 Adleman提出了一种新的非对称加密算法,并以他们自己的名字命名,即为RSA加密算法。RSA算法知识涉及了质数、欧拉函数等高等数学知识,如果没有数学基础,建议不要深究下去。本文重点介绍如何使用Python实现密钥对的生成以及数字签名,从而实现网络信息的加密和解密。

    RSA算法可以总结为四句话:公钥加密、私钥解密、私钥签名、公钥验签。加密是防止信息泄露,而签名是为了防止信息被篡改。

    比如,小九同学想通过互联网给小蓝同学发送一段文字“一切安好”,为了不让其他人知道这段文字,小九同学选择使用RSA算法加密,使用在线RSA工具模拟步骤如下:

    一、小九和小蓝同学提前使用RSA算法,分别生成自己的一对密钥对(公钥和密钥)。公钥用来加密,私钥用来解密和数字签名;公钥提前告诉对方,私钥不告诉任何人。公钥和私钥其实就是两个字符串。

    (1)小九同学生成的密钥对:
    image.png

    (2)小蓝同学生成的密钥对
    image.png

    二、小九想给小蓝发送信息“一切安好”,就需要使用小蓝的公钥对“一切安好”这四个汉字进行加密,加密后获得加密文本字符串。这样可以保证,只有小蓝的私钥能解开加密后的文本。
    image.png

    三、为了确保小蓝收到的就是小九本人发送的内容,不是别人伪造的,小九使用自己的私钥和发送内容中的一部分文本,生成数字签名,一同发送给小蓝同学。我们这里使用“一切安好”四个汉字的后两个汉字“安好”作为签名文本,并提前跟小蓝约定发送信息的最后两个汉字是签名文本。现实世界,双方使用的是数字证书和相同的哈希函数,这里仅作了解。

    image.png

    四、小蓝收到小九发送的加密密文和签名字符串后,首先用自己的私钥对密文进行解密。
    image.png

    五、小蓝同学为了验证该内容是不是小九本人发送,使用小九的公钥对小九的数字签名内容进行确认。

    image.png
    六、 如果数字签名验证准确,则小九通过RSA算法,将“一切安好”四个汉字发送给了小蓝同学。
    image.png