教你用python写RSA加密算法

这篇具有很好参考价值的文章主要介绍了教你用python写RSA加密算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

教你用python写RSA加密算法

RSA加密算法简介

RSA加密算法是一种非对称加密算法,即使用不同的密钥进行加密和解密。它是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年提出的,是目前最广泛使用的公钥加密算法之一 。

RSA加密算法的原理是基于数论中的一个难题:大数分解。给定一个大整数n,将其分解为两个素数p和q的乘积是非常困难的,但如果已知p和q,则可以很容易地计算出n。因此,可以将n作为公开的信息,而将p和q保密作为私有的信息。这样,只有知道p和q的人才能对n进行因式分解,从而破解RSA加密算法 。

步骤

RSA加密算法的具体步骤如下:

  • 公钥和私钥的生成:
    • 随机选择两个大素数p和q,计算n = p * q。
    • 根据欧拉函数,求得r = φ(n) = (p - 1) * (q - 1)。
    • 随机选择一个小于r的整数e,使得e与r互质。
    • 求得e关于r的模逆元素d,即满足ed ≡ 1 (mod r) 的整数d。
    • 将n和e作为公钥,将d作为私钥。
  • 加密过程:
    • 将明文m(m < n)转换为一个整数m’。
    • 使用公钥(n, e)对m’进行加密,得到密文c’,计算方法为c’ = m’^e mod n。
  • 解密过程:
    • 使用私钥d对c’进行解密,得到明文m’,计算方法为m’ = c’^d mod n。
    • 将m’转换回原来的明文m。

代码

下面我们用python实现RSA加密算法,并给出一个简单的示例:文章来源地址https://www.toymoban.com/news/detail-483500.html

import random
import math

# 求两个数的最大公约数
def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

# 计算e在模phi意义下的乘法逆元d
def multiplicative_inverse(e, phi):
    d = 0
    x1 = 0
    x2 = 1
    y1 = 1
    temp_phi = phi

    while e > 0:
        # 辗转相除求gcd和乘法逆元
        temp1 = temp_phi // e
        temp2 = temp_phi - temp1 * e
        temp_phi = e
        e = temp2

        x = x2 - temp1 * x1
        y = d - temp1 * y1

        x2 = x1
        x1 = x
        d = y1
        y1 = y

    if temp_phi == 1:  # 如果e和phi互质,则返回d+phi
        return d + phi

# 生成RSA密钥对
def generate_keypair(p, q):
    n = p * q  # 计算n
    phi = (p-1) * (q-1)  # 计算phi

    # 选择一个随机整数e使得1 < e < phi且e与phi互质
    e = random.randrange(1, phi)
    g = gcd(e, phi)
    while g != 1:  # 如果e和phi不互质,重新选择e
        e = random.randrange(1, phi)
        g = gcd(e, phi)

    # 计算e的乘法逆元d
    d = multiplicative_inverse(e, phi)

    # 返回公钥和私钥
    return ((e, n), (d, n))

# 加密消息
def encrypt(public_key, plaintext):
    key, n = public_key
    # 对明文中的每个字符进行加密,并将结果存储在列表cipher中
    cipher = [(ord(char) ** key) % n for char in plaintext]
    return cipher

# 解密消息
def decrypt(private_key, ciphertext):
    key, n = private_key
    # 对密文中的每个数字进行解密,并将结果存储在列表plain中
    plain = [chr((char ** key) % n) for char in ciphertext]
    # 将plain列表转换为字符串并返回
    return ''.join(plain)

if __name__ == '__main__':
    # 选择两个质数p和q
    p = 17
    q = 19

    # 生成RSA密钥对
    public, private = generate_keypair(p, q)
    print("公钥: ", public)
    print("私钥: ", private)

    # 加密和解密消息
    message = "Hello world"
    encrypted_message = encrypt(public, message)
    decrypted_message = decrypt(private, encrypted_message)

    # 输出原始消息、加密后的消息和解密后的消息
    print("原始消息: ", message)
    print("加密后的消息: ", encrypted_message)
    print("解密后的消息: ", decrypted_message)

到了这里,关于教你用python写RSA加密算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【华为OD机考 统一考试机试C卷】素数之积/RSA加密算法(C++ Java JavaScript Python C语言)

    目前在考C卷,经过两个月的收集整理, C卷真题已基本整理完毕 抽到原题的概率为2/3到3/3, 也就是最少抽到两道原题。 请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。 另外订阅专栏还可以联系笔者开通在线OJ进行刷题,提高刷题效率。

    2024年03月21日
    浏览(10)
  • 细谈RSA加密算法

    细谈RSA加密算法

           RSA加密算法是计算机科学中最广泛使用的公钥加密算法之一。RSA加密算法是基于数学上的不可解性问题,使用了一对密钥: 公钥和私钥 。公钥可以给任何人公开,私钥只能由特定的用户持有。本文将深入探讨RSA加密算法,讲解其加密、解密过程、加解密例子及实际应

    2024年02月09日
    浏览(7)
  • 加密算法 AES和RSA

    加密算法 AES和RSA

    通过互联网发送数据,数据可能会被第三者恶意窃听,造成损失。因此需要给重要的数据进行加密,加密后的数据被称为“密文”。接收方通过解除加密或得原本的数据,把密文恢复为原本数据的操作叫做“解密”。像这样就减少了数据被恶意窃听的风险。 那么加密是怎么操

    2024年02月06日
    浏览(13)
  • C# 实现对称加密算法(AES)与非对称加密算法(RSA),包含前端加密对应算法实现

    C# 实现对称加密算法(AES)与非对称加密算法(RSA),包含前端加密对应算法实现

    一种既简单速度又快的加密方式,加密与解密使用的都是同一个密钥,别名又叫做:单密钥加密;对称加密有很多公开算法,并且因为它效率很高,所以适用于加密大量数据的场合;但其密钥的传输过程是不安全的,并且容易被破解,密钥管理起来也相对麻烦。 需要两个密钥

    2024年02月09日
    浏览(22)
  • 【密码学基础】RSA加密算法

    【密码学基础】RSA加密算法

    RSA是一种非对称加密算法,即加密和解密时用到的密钥不同。 加密密钥是公钥,可以公开;解密密钥是私钥,必须保密保存。 基于一个简单的数论事实:两个大质数相乘很容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥;而两个

    2024年02月01日
    浏览(40)
  • RSA 加密解密算法实现(简单,易懂)!!!

    RSA 加密解密算法实现(简单,易懂)!!!

    目录 一、什么是RSA算法 1.对称加密 2.非对称加密 3.非对称加密的应用 二、RSA算法的基础操作步骤 1.生成公钥和私钥 2.用公钥加密信息  3.用私钥解密信息 三、AC代码 六、RSA算法的测试  七、共勉     在计算机中常用的加密算法分为两类: 对称加密算法和非对称加密算法。

    2024年01月20日
    浏览(13)
  • RSA加密算法讲解及C++实现

    RSA加密算法讲解及C++实现

    一.加密原理              二.C++实现 3.1实现加解密算法 加解密算法示例: 2.2实现pqed的生成 2.2.1找出质数P、Q  2.2.2计算公共模数N=P*Q  2.2.3欧拉函数F(N)=(P-1)*(Q-1)  2.2.4计算公钥E 2.2.5 计算私钥D 完整代码 此步骤讲解建立在了解欧拉函数等数学基础和密码学基础上的。 步骤

    2023年04月16日
    浏览(10)
  • RSA算法揭秘:加密世界的守护者

    RSA算法揭秘:加密世界的守护者

    RSA算法是由Ron Rivest、Adi Shamir和Leonard Adleman在1977年共同提出的。它是一种非对称加密算法,基于两个大素数的乘积难以分解的数论问题。RSA算法包括公钥和私钥,用于加密和解密数据,实现了安全的通信和数据传输。 首页 | 一个覆盖广泛主题工具的高效在线平台(amd794.com) h

    2024年03月20日
    浏览(8)
  • 0001__非对称加密与 RSA 算法

    密码学浅谈(1):非对称加密与 RSA 算法 - 知乎 密码学浅谈(2):密码学标准 - X.509 与 PKCS 系列 - 知乎 密码学浅谈(3):OpenSSL 与 Cryptography/CNG 的使用 - 知乎 密码学浅谈(1):非对称加密与 RSA 算法 - 知乎

    2024年02月07日
    浏览(25)
  • 公开密钥加密之RSA算法【概念+计算+代码实现】

    公开密钥加密之RSA算法【概念+计算+代码实现】

    🌈推荐阅读:http://t.csdn.cn/nQfIY🔥 安全算法:公开密钥加密之RSA算法 公开密钥加密(又称“非对称加密”)是加密和解密使用不同密钥的一种加密方法。包括公开密钥和私有密钥(成对生成的,网上有工具网站)。 公开密钥(public key,后面简称P):加密用的密钥 私有密钥

    2023年04月17日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包