RSA加/解密算法--python实现

AI权益码!Claude Code、Cursor等20+工具免费用! 购周边限时赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

使用了gmp大数库python的封装接口,但之后发现这个接口bug较多,接口较少

不废话,上代码:

import gmpy

def setkey(bits):
    half = bits/2;
    gmpy.rand('init')
    p = gmpy.rand('next',gmpy.mpz(half*'9'))
    p = gmpy.next_prime(p)

    q = gmpy.rand('next',gmpy.mpz(half*'9'))
    q = gmpy.next_prime(q)

    n = p*q

    fn = (p-1)*(q-1)

    while True:
        e = gmpy.rand('next',gmpy.mpz(8*'9'))
        e = gmpy.next_prime(e)
        if gmpy.gcd(e,fn)==1:
            break
    d = gmpy.invert(e,fn)
    return n,e,d

def RSA_Encrypt(dat,n,e):
    dat = gmpy.mpz(dat)
    n = gmpy.mpz(n)
    e = gmpy.mpz(e)
    return dat**e%n

def RSA_Decrypt(dat,n,d):
    dat = gmpy.mpz(dat)
    n = gmpy.mpz(n)
    d = gmpy.mpz(d)
    return dat**d%n

if __name__=='__main__':
    bits = int(raw_input('input bits:'))
    n,e,d = setkey(bits)
    print 'pubKey:(',e,', ',n,')'
    print 'privateKey:(',d,', ',n,')'

    num = gmpy.mpz(raw_input('input num:'))
    print 'after encrypt: ',RSA_Encrypt(num,n,e)
    print 'after decrypt: ',RSA_Decrypt(num,n,d)


Python实现RSA加解密算法 RSA是一种基于数论的非对称加密算法,利用了大数分解的计算复杂性。与对称加密算法不同,RSA使用一对密钥:公钥用于加密,私钥用于解密。这意味着即使加密密钥被公开,只有拥有解密密钥的人才能解密密文。RSA作为一种经典的非对称加密算法,依赖于大数分解的难度以保证安全性。通过上述的Python实现,我们不仅掌握了RSA的核心算法原理,也了解了密钥生成、加密解密的过程。尽管本文中实现RSA算法是简化版,但它提供了一个良好的基础,使你能进一步探索加密领域的复杂算法和应用。 阅读详情

相关推荐

RSA加密算法详解及Python实现

RSA 加密算法 一、前言 RSA 加密算法是一种非对称加密算法。在公开密钥加密和电子商业中 RSA 被广泛使用。RSA 是 1977 年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。 二、准备工作 1、找出两个质数 ????...

Jimmy Huang's Blog 8042

mpz 类型 [python]

在用到这两个库的函数时可能会返回mpz类型的结果,但mpz与int类型不同,主要用int()转换即可。

amber_o0k的博客 2634

RSA加解密算法数学基础及python实现

密码算法实现与应用 步骤一 Alice 与 Bob 协商会话密钥。采用公钥密码体系,通过自选密码库实现密钥协商,session key 长度 1024 bits. 注:密钥协商所需公钥与私钥,采用两种方式生成: 1、密码库实现; 使用python实现RSA算法,先简单的对RSA进行说明: 在对称密码体制中,密钥分发过程复杂,代价高;密钥量增大造成密钥管理困难;保密通信系统的开放性差;如果收发双方素不相识,或没有可靠的密钥传递渠道,则无法通信;当用对称密码算法实现数字签名时,由于通信双方拥有相同的密钥,使得接

Goallegoal的博客 2385

Crypto--RSA系列

记录RSA的一些题

刘十三t的博客 6550

RSA-p和q挨得很近(费马分解)

一、基础 最简单的就是拿yafu直接分解,但是我们得知道那个算法的原理, 就是现在p,q是两个素数,而且他俩在素数序列里面就是一前一后的关系。所以我们要把他俩的乘积开根号得到的结果一定是在p,q之间的一个数字,(而且一定不是素数,因为p,q就是紧邻的两个素数)。 那我们找这个开方出来的数字的下一个素数,一定是q,因此我们再让n/q就可以得到两个素数。(这是第一种方法,必须得保证两个数为素数,而且挨得很近才行,我们还会介绍第二种方法,即使有一个不是素数也可以解决。...

admin的博客 1万+

crypto_RSA_gmpy2 新手题

此时,我们无需关心公钥是什么,私钥是什么,7,3,33这些数字代表什么含义,只需要知道通过这样的计算,我们可以将3,1,15加密为9,1,27,再解密为3,1,15。然后再思考:7,3,33是怎么来的?此时,我们无需知道为什么要这样计算公钥与私钥(也就是其数学原理),只需要知道公钥和私钥是这样子来的(你这样做就行了,干就完啦),在拥有公钥和私钥的情况我们可以进行加解密。p、q:选取的两个质数,且q由gmpy2.next_prime§生成,即这两个质数存在一定的特征,在这里表现为,p是q的下一个质数。

linqiipnil的博客 1314

【密码学】RSA破解的部分方法(PYTHON实现

源自于密码学的一次大作业~ sbcsdn又锁vip了,开放了

Mr_Fmnwon的博客 7282

python实现公钥加解密RSA算法

python实现公钥加密RSA算法 In this part, you are required to implement the textbook RSA algorithm from scratch. It contains the following three procedures, KeyGen, Encrypt, and Decrypt.Your program does

timerring的博客 2万+

RSA加密算法Python实现

RSA加密算法Python实现,最详细的RSA算法简介

天天学安全专属博客 2万+

RSA加解密算法python代码实现

写在前面:本代码只需调用random库,关于逆元、素数、模幂等的求解均为自编函数。 1. RSA算法描述 1.1 密钥的产生   (1)选两个保密的大素数ppp和qqq;   (2)计算n=p×q, φ(n)=(p−1)(q−1)n=p\times q,\ \varphi \left( n \right) =\left( p-1 \right) \left( q-1 \right)n=p×q, φ(n)=(p−1)(q−1),其中φ(n)\varphi \left( n \right)φ

qq_47912072的博客 1万+

python使用RSA加密算法

最近换了工作,由于新公司是做个人和企业征信业务的,所以对数据的隐私性看的非常重要,所有涉及隐私的数据一律都要进行加密进行传输。 那么问题来了,对我我要做的工作,就是要实现我们接口自动化,免不了要接触加密-签名-解密-验签等一系列过程。这时候就觉得大学真的白学密码学了。。。 基于我用python语言搞,那我这里就说说我是如何实现python对数据进行RSA加解密的吧。。 一、查找python支...

MTbaby的博客 2万+

Python实现 RSA 加解密

昨天看到一篇英文文章[1],展示了如何用 Python实现 RSA 算法代码的逻辑与前文一文搞懂 RSA 算法一样,不太熟悉 RSA 的朋友可以看一下一文搞懂 RSA 算法,里面对什...

somenzz的博客 6033

Python实现RSA算法

一、RSA算法 RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积。 RSA的公钥、私钥的组成,以及加密解密的公式可见于下表: 公钥KU n: 两素数p和q的乘积 -----e: 与(p-1)(...

qq_36944952的博客 1万+

python实现rsa的公钥加密、私钥解密及私钥加密、公钥解密

rsa包中现成的公钥加密、私钥解密代码 import rsa def rsa_encrypt(d_str): # 生成公钥和私钥 pubkey, privkey = rsa.newkeys(1024) # 将字符串进行编码 content = d_str.encode('utf-8') # 公钥加密 crypto = rsa.encrypt(co...

weixin_38825407的博客 9539

Python RSA加密解密

Python RSA加密解密 RSA是一种非对称加密算法 非对称加密需要公钥(publickey)和私钥(privatekey) 消息传递前需要先生成公钥和私钥,发送方将待发送消息用公钥加密,发送给接收方。接收方收到消息后,用私钥解密。在这个过程中,公钥负责加密,私钥负责解密,消息在传输过程中即使被截获,攻击者由于没有私钥,无法破解截获的消息。 非对称加密算法加解密速度低于对称加密算法,但是安全性更高。 非对称加密算法RSA、DSA、ECC等算法 RSA加密解密过程: import rsa # rs

weixin_41924879的博客 1万+

Python crypto模块实现RSA和AES加密解密

Python crypto模块实现RSA和AES加密解密 Python的crypto是用于RSA加密解密,AES加密解密的。 一、RSA和AES简介 RSA加密算法是一种非对称加密算法RSA 是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的。...

weixin_43790276的博客 2万+

python3 RSA加解密

python3 可以使用 Crypto.PublicKey.RSArsa 生成公钥、私钥。 其中 python3.6Crypto 库 使用 pip3 install pycryptodome 安装 rsa 加解密的库使用 pip3 install rsa 就行了 C:\WINDOWS\system32>pip3 install rsa Collecting rsa Dow...

whatday的专栏 3万+

PythonRSA加密 解密 签名 验证

PythonRSA加密 解密 签名 验证

PlutoZuo的博客 4849

RSA-python编程简单实现

RSA-python简单实现

qq_46015509的博客 1万+
上一篇: RSA加/解密算法——gmp大数库C++实现
下一篇: RSA加/解密算法--miracl大数库实现
dzn9966
博客等级 码龄12年 13粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值