RSA加密

RSA加密

1.1 RSA加密原理

非对称加密的一种。

所谓的非对称加密,加密秘钥和解密秘钥不一样。

根据数论,寻求两个大的素数比较简单,但是把它们的乘积进行因式分解却极其困难,因此,可以将乘积公开作为加密秘钥。

非对称加密一般用来做身份验证和端数据加密(非对称加密加密速度,加密数据大小有限)

1.2 RSA库

  1. 安装
    • pip install rsa
  2. 使用
# 生成秘钥对
import rsa
pub, pri = rsa.newkeys(1024)
print(pub)
PublicKey(116308441139083577876157766248745833179967747901846507416595813990199342503462594660347616002313121632810925952593865864943639914938330483050483584606533608782756061411525819545781619361567454572833959557870861076026031268593353966696612026141092181598777033352851699891932171227194324855047825969171482077269, 65537)
print(pri)
PrivateKey(116308441139083577876157766248745833179967747901846507416595813990199342503462594660347616002313121632810925952593865864943639914938330483050483584606533608782756061411525819545781619361567454572833959557870861076026031268593353966696612026141092181598777033352851699891932171227194324855047825969171482077269, 65537, 61301649050555029174332690873310932293245738255116683082595367606839887220266489841734094510763383240620641839792747832627114606127833308597125326148143893920294887461021330211253959497007343944186201963266225852224192388755240384507953577780376651340580793278942579060402934814213057298957100845605139428777, 42837935774961484388279765551600265000598506992169151065321761561502872335981777864293843463598590806801192583926530272172222974901527411630998148154819045349716183, 2715080431281312150476471084253311429987757187834481444213286099681552767626583562417088850641154058312803528888629807558190124397045603405745843)
# 加密
# 消息加密之前,需要转换成字节数据
message = 'zlf'.encode('utf-8')
res = rsa.encrypt(message, pub)
print(res)
b'!5\x1a}\x8eLm\xab\xdck\xe2\x0b\xbc|\x9d}(mSA\x00\x17\x15\xc3s\xc6R]"\xbb?\xc8\x98\xe1\xc8f\xda\\y\xc8\xaeZd\xc9\xe0Vel79\x83\x10\xf67\xbeyy\x9f\xe9\x12\x08,\x01\xbc/\t\xde>\xcf\x87\xf8\xab\x9e\xc4\x02\x9f\x10\x8d\x9c\xa7DK`T\xdd\xe80\xd5x1\xc9v\xfc\xd0\xe3\xda\x03\xd2\xa1\xbdM\x1c\\\xa8\x95\xc0;\xc85?\tQ\x85\x14\xa5u\xc2.\xdeT\x1d\x99\xe2\xccom\x7fW'
# 一般加密的密文会以base64编码的方式输出
# a-z A-Z 0-9 += 26+26+10+2 64
import base64
b_res = base64.b64encode(res).decode()
b_res
'ITUafY5Mbavca+ILvHydfShtU0EAFxXDc8ZSXSK7P8iY4chm2lx5yK5aZMngVmVsNzmDEPY3vnl5n+kSCCwBvC8J3j7Ph/irnsQCnxCNnKdES2BU3egw1XgxyXb80OPaA9KhvU0cXKiVwDvINT8JUYUUpXXCLt5UHZnizG9tf1c='
base64.b64decode(b_res.encode())
b'!5\x1a}\x8eLm\xab\xdck\xe2\x0b\xbc|\x9d}(mSA\x00\x17\x15\xc3s\xc6R]"\xbb?\xc8\x98\xe1\xc8f\xda\\y\xc8\xaeZd\xc9\xe0Vel79\x83\x10\xf67\xbeyy\x9f\xe9\x12\x08,\x01\xbc/\t\xde>\xcf\x87\xf8\xab\x9e\xc4\x02\x9f\x10\x8d\x9c\xa7DK`T\xdd\xe80\xd5x1\xc9v\xfc\xd0\xe3\xda\x03\xd2\xa1\xbdM\x1c\\\xa8\x95\xc0;\xc85?\tQ\x85\x14\xa5u\xc2.\xdeT\x1d\x99\xe2\xccom\x7fW'
# 解密
# 注意解密的数据是二进制数据
# base64编码的数据要转换成二进制数
rsa.decrypt(base64.b64decode(b_res.encode()), pri)
b'zlf'

读取现有的公钥

pub_key = """
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQENQujkLfZfc5Tu9Z1LprzedE
    O3F7gs+7bzrgPsMl29LX8UoPYvIG8C604CprBQ4FkfnJpnhWu2lvUB0WZyLq6sBr
    tuPorOc42+gLnFfyhJAwdZB6SqWfDg7bW+jNe5Ki1DtU7z8uF6Gx+blEMGo8Dg+S
    kKlZFc8Br7SHtbL2tQIDAQAB
    -----END PUBLIC KEY-----
    """
# 一般提供的公钥的格式都是pem格式
# 1. 转换成字节数据
pub_key = pub_key.encode()
# 2. 调用方法加载
pub = rsa.PublicKey.load_pkcs1_openssl_pem(pub_key)
pub
PublicKey(146108729746987381736834158701459520580739497972013422621519958953375798933355627739500199234753023982343910387697136163975815556804841172178573058935486832130715154287652170649213576078798069230216422090889080187686092667825252542151372336410071790576887605716209248483695097952444145927616731433244959110837, 65537)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这两天正好做一个rsa加密,现在就总结一下其中的几个要点。 1.什么是rsa算法 RSA公钥加密算法是1977年由...
    gogocheng阅读 5,705评论 2 5
  • 密码学概述 密码学是指研究信息加密,破解密码的技术科学。密码学的起源可追溯到2000年前。而当今的密码学是以数学为...
    帅驼驼阅读 313评论 0 4
  • 对公司优教项目网站抓包时,发现客户端对密码进行了加密,然后上传服务器,进行校验。使用chrome调试功能断点调试,...
    就像当初在寻找阅读 2,055评论 0 3
  • RSA非对称加密概述   该加密方式需要两个秘钥:公开的秘钥简称公钥(publickey)和私钥(privatek...
    spyn_n阅读 302评论 0 4
  • 数据信息安全对我们每个人都有很重要的意义,特别是一些敏感信息,可能一些类似于收货地址、手机号还没引起大家的注意。但...
    metabolism阅读 716评论 0 0