目录

一、RSA相关的加密库

(1)安装方法

二、RSA公钥与私钥的生成与加载

(1)RSA key的生成

(2)RSA key的加载

三、RSA库的加密与解密

(1)RSA的加密与解密


一、RSA相关的加密库

整理相关的Python加密库共有两个:rsa、pycryptodome

rsa相关文档:

Welcome to Python-RSA’s documentation! — Python-RSA 4.8 documentation

pycryptodome相关文档:Welcome to PyCryptodome’s documentation — PyCryptodome 3.160b1 documentation

(1)安装方法

pip install rsa
pip install pycryptodome

二、RSA公钥与私钥的生成与加载

(1)RSA key的生成

rsa:

import rsa# 1.生成rsa公钥和秘钥
public_key, private_key = rsa.newkeys(2048)
print(public_key)
print(private_key)# PublicKey(19098161071657439892141520947697976412043884440571560061732797043401605428617379880876784157552100437663862108653364887957857407673613395651251207902962168142078417653556179438060072971988089113047601621314817182362262176930675993414870122716523157368732153235778784132276152363145462615252652157590422732266479304484410391479389078146358819372026943561301400918688492596276400922485831622528552743984111963383534507449159518660058705591838061812458696501224484080067698049147397436958820205096667315762969055175572690118457228853800096631713707974780668595272012107231537367860856268159500002494378393647771069872129, 65537)
# PrivateKey(19098161071657439892141520947697976412043884440571560061732797043401605428617379880876784157552100437663862108653364887957857407673613395651251207902962168142078417653556179438060072971988089113047601621314817182362262176930675993414870122716523157368732153235778784132276152363145462615252652157590422732266479304484410391479389078146358819372026943561301400918688492596276400922485831622528552743984111963383534507449159518660058705591838061812458696501224484080067698049147397436958820205096667315762969055175572690118457228853800096631713707974780668595272012107231537367860856268159500002494378393647771069872129, 65537, 8880439454013592677008723459422129990396651272441181642755165129630903517580695400916110295210990871375994230726194998178551759181007592948658457201807667607026530045233547647824017940222546464302800125241432150011559540103840887183190443866263739531176947948595795774096822666806457844227587355960072602117933430829740489281850127875638514134298553320591021164570006958107750491382137533473869043240158590449647759672384095143448067115332267691110670870462632813953769699781416383910698566904310022455917446208961734473176392911990700350475619648878952175791390114891028805699788242897031907409660070575325406384713, 2163460748679668507110555508604706434272557742170915229953589661165433609140831869822868132320866458342261906756311969795268936507135621929853768390155740087765012796756509948131264342314278249277263108268816461652649587763782125093410577510878488228924446920698513177659559076178471799369884220265853797495973872946065331467091, 8827597673455732953307664933048294570153802075123524767867719437424410541763584114662984289499238220781954510288647521362318053831051944888845440948276844951510106632675755938321643949274151289778512527106994998932836399341068302535983451752240116002062745710054286776087396422152638771419)# 2.将生成的公钥和秘钥保存成PEM或者DER的格式
rsa_pem_public_key = public_key.save_pkcs1()
rsa_der_public_key = public_key.save_pkcs1("DER")
print(rsa_pem_public_key.decode("utf-8"))
print(rsa_der_public_key)'''
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAjT2dsN/esJlZAtX5z+LpkoSU3Dunv2A9zKBgYgDNgGNdAjBMY1n6
qYtPQE+tsGM5kcXwq5XT0LxNWIKFCsxSxBUfaMZ2p8nvZV1VGQZroRHR0jr9o5LT
0jY20ywz3M7I6jwPJEMQo91F4HcuF+c9MyFh9gpJ2LyIAPt61fldcxxvr2XhLYYq
NXESC3/MRnkARNzKTOtv8/5ntXoXx9ly+xq7ijNPQoZYTKlvv0MbyXB7MzsrBNR+
DCNOHNPRXJ4fgC+D33zErUnWdTy+dB9yXwfvw5R5fzLjGfKKagpM0YOJgY4pYKDz
9tlvntcJ09627Atz+uMs/j7H5MxL7twvTwIDAQAB
-----END RSA PUBLIC KEY-----
''''''
-----BEGIN RSA PRIVATE KEY-----
MIIEqwIBAAKCAQEAwUCX9QInBGTtG8FpWLyOnsGoBerlUWRmD1x1Em65N5E1+IYs
htBCyIXizWQhrp8cdW0wwHQ+t8vwYJ5A+/F3L7RXt9xcKmTY73+YNnX+qE280TTp
hbZiLQ/tbgmVWgVY+4a6FxmZY+n7Zwrzzxm+7ydXU361f2AhYs/anDTcFkcg/0Cr
tq4HpFasxqgC2Jli94nNNFl2oKjgdMcg+/6QxRNgyyqWEe142L7kBAyqujOUwLGL
R/x5N/q4D/k5nTXTJ99kh1AjO5Y4k0hne6+5TWnsMrWJTUwOAZcVcjxCt4i4LC3o
KCxaLDoL7pxQ2Y36qzMxtW3RPzGloOXG4cJ1vQIDAQABAoIBAQCa1sRqPQVCEhOg
74EW5k1nika0JxcB9e2IVU5ALJMeoKybqfW3NtqrjArDAn2ySi4lMA2lxf4SicbZ
wzLSKxCSGm9GE7uNBCyFCLjOuhAGjfLBtSF+TzmuXVqhlfAiprI7JiGoLIyob2tN
jor23uwK9nyTm6yUmFKdhG5CZiGo5Ydz1lovQutaMGTOo2q0wJ3+SKfHWW/wF+NL
EtjhhTHxrt1rSLN+0kWZCRXUmEP5s1Y98H57rsZzSLGnPy6GeiKjPvB5Xr+TyYxz
QVhwi/MWskVUwwXBUqD/hGUP8/2Qpw4OVbn1YV4KTd01boCMqWUVy70PKr+OAO3b
ZMbW9+eBAoGJAPxbqvSQVr5cgBZXwogdnKGdOkUMZcyWjb2Nsltzipvar9HDzrbl
iohAoH+0jorWjEOqpmtQq62ogwTkS9ATKk5ci9JfZwwc35raSwoSIv3yFnT7SPgF
ViZcEMx6tJJ5MeNOBw34BB18L1FY+Rj99km3gvGCFxjcbE6tKZcyrRbdl8z6BH+Q
f7ECeQDECo+H0DeC7oFWASAXLOGs1iCyUHHcrlUUH3+HPDtKRLOB0pER6kVS6pG8
AcamhDpntil9wHsxz00qcgg/29HpcFfIFaRRdF5rtKfM5CxE5oB8YVFz41Bwcds2
jfzJBsxT8xFsh6TbKa50BLD1NPu3owTdj7iZxc0CgYkA5hgC0QjGPr2CgFy2X3t4
dBcyqQB71UW0qQ+Ifz/jMuX7h2xcj4DNhhw++xG7IjYrIAt5v8GHN0i9ZXlu8qJ2
4YoaZs9b2rx82OmOn/kXdKoF9dWkm5fqDAHHw1liSWc9qH5dikwIHIY9cpOIVFRC
+sXbG688tgtMqZPTpyuqjH2xSlDwRwuOkQJ4IAitvX6bo4x/m+MhMEhINCrlOt4E
TRA7nMcs2pdQBOnG/16+D9RdMZhc6gDMSidvN8U/cGoEd3YtYNMzX+P2oBOYdHx8
1kaSqzzg8o0SYsvbkPeCDNLHMSiZrodzGBJBTzJ31Wkw2hMsi468r8TRoQdFY0L5
4j69AoGJAPKC2PPlMZPNcER7nn3GOuB49feFvb4sAQluvxktpNy5WrKAOTKmQ1Z+
Wu5jJjnbf1/oUo3jjf9/JrA4SzwCo++3xsmpMzRPTMwfXdDDRxXjgRzykDOJh62F
+3meSBC/6GGcHshyQgO3eFTsSUaKakWLc2syysGf6m+BwMvccg3wYCs86MFjL4E=
-----END RSA PRIVATE KEY-----
''''''
b'0\x82\x01\n\x02\x82\x01\x01\x00\x8d=\x9d\xb0\xdf\xde\xb0\x99Y\x02\xd5\xf9\xcf\xe2\xe9\x92\x84\x94\xdc;\xa7\xbf`=\xcc\xa0`b\x00\xcd\x80c]\x020LcY\xfa\xa9\x8bO@O\xad\xb0c9\x91\xc5\xf0\xab\x95\xd3\xd0\xbcMX\x82\x85\n\xccR\xc4\x15\x1fh\xc6v\xa7\xc9\xefe]U\x19\x06k\xa1\x11\xd1\xd2:\xfd\xa3\x92\xd3\xd266\xd3,3\xdc\xce\xc8\xea<\x0f$C\x10\xa3\xddE\xe0w.\x17\xe7=3!a\xf6\nI\xd8\xbc\x88\x00\xfbz\xd5\xf9]s\x1co\xafe\xe1-\x86*5q\x12\x0b\x7f\xccFy\x00D\xdc\xcaL\xebo\xf3\xfeg\xb5z\x17\xc7\xd9r\xfb\x1a\xbb\x8a3OB\x86XL\xa9o\xbfC\x1b\xc9p{3;+\x04\xd4~\x0c#N\x1c\xd3\xd1\\\x9e\x1f\x80/\x83\xdf|\xc4\xadI\xd6u<\xbet\x1fr_\x07\xef\xc3\x94y\x7f2\xe3\x19\xf2\x8aj\nL\xd1\x83\x89\x81\x8e)`\xa0\xf3\xf6\xd9o\x9e\xd7\t\xd3\xde\xb6\xec\x0bs\xfa\xe3,\xfe>\xc7\xe4\xccK\xee\xdc/O\x02\x03\x01\x00\x01'
''''''
b'0\x82\x04\xab\x02\x01\x00\x02\x82\x01\x01\x00\xc1@\x97\xf5\x02\'\x04d\xed\x1b\xc1iX\xbc\x8e\x9e\xc1\xa8\x05\xea\xe5Qdf\x0f\\u\x12n\xb97\x915\xf8\x86,\x86\xd0B\xc8\x85\xe2\xcdd!\xae\x9f\x1cum0\xc0t>\xb7\xcb\xf0`\x9e@\xfb\xf1w/\xb4W\xb7\xdc\\*d\xd8\xef\x7f\x986u\xfe\xa8M\xbc\xd14\xe9\x85\xb6b-\x0f\xedn\t\x95Z\x05X\xfb\x86\xba\x17\x19\x99c\xe9\xfbg\n\xf3\xcf\x19\xbe\xef\'WS~\xb5\x7f`!b\xcf\xda\x9c4\xdc\x16G \xff@\xab\xb6\xae\x07\xa4V\xac\xc6\xa8\x02\xd8\x99b\xf7\x89\xcd4Yv\xa0\xa8\xe0t\xc7 \xfb\xfe\x90\xc5\x13`\xcb*\x96\x11\xedx\xd8\xbe\xe4\x04\x0c\xaa\xba3\x94\xc0\xb1\x8bG\xfcy7\xfa\xb8\x0f\xf99\x9d5\xd3\'\xdfd\x87P#;\x968\x93Hg{\xaf\xb9Mi\xec2\xb5\x89ML\x0e\x01\x97\x15r<B\xb7\x88\xb8,-\xe8(,Z,:\x0b\xee\x9cP\xd9\x8d\xfa\xab31\xb5m\xd1?1\xa5\xa0\xe5\xc6\xe1\xc2u\xbd\x02\x03\x01\x00\x01\x02\x82\x01\x01\x00\x9a\xd6\xc4j=\x05B\x12\x13\xa0\xef\x81\x16\xe6Mg\x8aF\xb4\'\x17\x01\xf5\xed\x88UN@,\x93\x1e\xa0\xac\x9b\xa9\xf5\xb76\xda\xab\x8c\n\xc3\x02}\xb2J.%0\r\xa5\xc5\xfe\x12\x89\xc6\xd9\xc32\xd2+\x10\x92\x1aoF\x13\xbb\x8d\x04,\x85\x08\xb8\xce\xba\x10\x06\x8d\xf2\xc1\xb5!~O9\xae]Z\xa1\x95\xf0"\xa6\xb2;&!\xa8,\x8c\xa8okM\x8e\x8a\xf6\xde\xec\n\xf6|\x93\x9b\xac\x94\x98R\x9d\x84nBf!\xa8\xe5\x87s\xd6Z/B\xebZ0d\xce\xa3j\xb4\xc0\x9d\xfeH\xa7\xc7Yo\xf0\x17\xe3K\x12\xd8\xe1\x851\xf1\xae\xddkH\xb3~\xd2E\x99\t\x15\xd4\x98C\xf9\xb3V=\xf0~{\xae\xc6sH\xb1\xa7?.\x86z"\xa3>\xf0y^\xbf\x93\xc9\x8csAXp\x8b\xf3\x16\xb2ET\xc3\x05\xc1R\xa0\xff\x84e\x0f\xf3\xfd\x90\xa7\x0e\x0eU\xb9\xf5a^\nM\xdd5n\x80\x8c\xa9e\x15\xcb\xbd\x0f*\xbf\x8e\x00\xed\xdbd\xc6\xd6\xf7\xe7\x81\x02\x81\x89\x00\xfc[\xaa\xf4\x90V\xbe\\\x80\x16W\xc2\x88\x1d\x9c\xa1\x9d:E\x0ce\xcc\x96\x8d\xbd\x8d\xb2[s\x8a\x9b\xda\xaf\xd1\xc3\xce\xb6\xe5\x8a\x88@\xa0\x7f\xb4\x8e\x8a\xd6\x8cC\xaa\xa6kP\xab\xad\xa8\x83\x04\xe4K\xd0\x13*N\\\x8b\xd2_g\x0c\x1c\xdf\x9a\xdaK\n\x12"\xfd\xf2\x16t\xfbH\xf8\x05V&\\\x10\xccz\xb4\x92y1\xe3N\x07\r\xf8\x04\x1d|/QX\xf9\x18\xfd\xf6I\xb7\x82\xf1\x82\x17\x18\xdclN\xad)\x972\xad\x16\xdd\x97\xcc\xfa\x04\x7f\x90\x7f\xb1\x02y\x00\xc4\n\x8f\x87\xd07\x82\xee\x81V\x01 \x17,\xe1\xac\xd6 \xb2Pq\xdc\xaeU\x14\x1f\x7f\x87<;JD\xb3\x81\xd2\x91\x11\xeaER\xea\x91\xbc\x01\xc6\xa6\x84:g\xb6)}\xc0{1\xcfM*r\x08?\xdb\xd1\xe9pW\xc8\x15\xa4Qt^k\xb4\xa7\xcc\xe4,D\xe6\x80|aQs\xe3Ppq\xdb6\x8d\xfc\xc9\x06\xccS\xf3\x11l\x87\xa4\xdb)\xaet\x04\xb0\xf54\xfb\xb7\xa3\x04\xdd\x8f\xb8\x99\xc5\xcd\x02\x81\x89\x00\xe6\x18\x02\xd1\x08\xc6>\xbd\x82\x80\\\xb6_{xt\x172\xa9\x00{\xd5E\xb4\xa9\x0f\x88\x7f?\xe32\xe5\xfb\x87l\\\x8f\x80\xcd\x86\x1c>\xfb\x11\xbb"6+ \x0by\xbf\xc1\x877H\xbdeyn\xf2\xa2v\xe1\x8a\x1af\xcf[\xda\xbc|\xd8\xe9\x8e\x9f\xf9\x17t\xaa\x05\xf5\xd5\xa4\x9b\x97\xea\x0c\x01\xc7\xc3YbIg=\xa8~]\x8aL\x08\x1c\x86=r\x93\x88TTB\xfa\xc5\xdb\x1b\xaf<\xb6\x0bL\xa9\x93\xd3\xa7+\xaa\x8c}\xb1JP\xf0G\x0b\x8e\x91\x02x \x08\xad\xbd~\x9b\xa3\x8c\x7f\x9b\xe3!0HH4*\xe5:\xde\x04M\x10;\x9c\xc7,\xda\x97P\x04\xe9\xc6\xff^\xbe\x0f\xd4]1\x98\\\xea\x00\xccJ\'o7\xc5?pj\x04wv-`\xd33_\xe3\xf6\xa0\x13\x98t||\xd6F\x92\xab<\xe0\xf2\x8d\x12b\xcb\xdb\x90\xf7\x82\x0c\xd2\xc71(\x99\xae\x87s\x18\x12AO2w\xd5i0\xda\x13,\x8b\x8e\xbc\xaf\xc4\xd1\xa1\x07EcB\xf9\xe2>\xbd\x02\x81\x89\x00\xf2\x82\xd8\xf3\xe51\x93\xcdpD{\x9e}\xc6:\xe0x\xf5\xf7\x85\xbd\xbe,\x01\tn\xbf\x19-\xa4\xdc\xb9Z\xb2\x8092\xa6CV~Z\xeec&9\xdb\x7f_\xe8R\x8d\xe3\x8d\xff\x7f&\xb08K<\x02\xa3\xef\xb7\xc6\xc9\xa934OL\xcc\x1f]\xd0\xc3G\x15\xe3\x81\x1c\xf2\x903\x89\x87\xad\x85\xfby\x9eH\x10\xbf\xe8a\x9c\x1e\xc8rB\x03\xb7xT\xecIF\x8ajE\x8bsk2\xca\xc1\x9f\xeao\x81\xc0\xcb\xdcr\r\xf0`+<\xe8\xc1c/\x81'
'''

pycryptodome:

from Crypto.PublicKey import RSA# 1.生成rsa公钥和秘钥并且导出PEM格式的公钥和秘钥
rsa_key = RSA.generate(2048)
# rsa_key = RSA.construct((n,e,d,p,q))print(rsa_key.public_key().exportKey().decode("utf-8"))
print(rsa_key.exportKey().decode("utf-8"))
'''
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkx8WbNvg5iE7VuTJzc5Z
tPt6/4sq2QK0ph6fTGsSe9DUb8jhswZJFeQ/Fcl9wVKKJD1EvgQrChj3IzPvS/R5
jOXnxqDXqy6bU4e9blmIDbdZxigYwNMHaWB6dEd0WF3G0x2zXdkIp/RjIAWZAAGz
yBBgvovaVTBZg0n1kdaYwfY+xV9Fx27p+xny0+H/XSREK88kRkBciNogJLjXIDCA
18LN/Pvko1DCtZJnNjz0/JjDqorjKVAZd3uMiDSI09QrhjHk0Xfq33lhn6OrzDj3
QhVXCu9gq6OVqrhG7B4gdnF9v2qGZB27Nu08Zz8XYHjbVcI4pdpiUXPKoYQRgBKY
7wIDAQAB
-----END PUBLIC KEY-----
''''''
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAkx8WbNvg5iE7VuTJzc5ZtPt6/4sq2QK0ph6fTGsSe9DUb8jh
swZJFeQ/Fcl9wVKKJD1EvgQrChj3IzPvS/R5jOXnxqDXqy6bU4e9blmIDbdZxigY
wNMHaWB6dEd0WF3G0x2zXdkIp/RjIAWZAAGzyBBgvovaVTBZg0n1kdaYwfY+xV9F
x27p+xny0+H/XSREK88kRkBciNogJLjXIDCA18LN/Pvko1DCtZJnNjz0/JjDqorj
KVAZd3uMiDSI09QrhjHk0Xfq33lhn6OrzDj3QhVXCu9gq6OVqrhG7B4gdnF9v2qG
ZB27Nu08Zz8XYHjbVcI4pdpiUXPKoYQRgBKY7wIDAQABAoIBADeTv195QsD83dNK
E5gtM0NE2yatNo8LUB4PJGN0cWOXtKDT9LsyDSr5cgFzgA+ndCsTgCP+JBoo6zd/
t47seHyLH18wRLjUnvXTqfKFXPm9gWrzm8JAFiUvPqMtmRyGtITtS+SQiA4Wqtme
c7mGaxmRYlKpN14GKVKI/n1M4aEnp8XS6K30rc8UPt8cf3y77Hqc7+igddg8jAMg
opWqeMR6tms9c39ZxD8gk4wSidBh1RDTkCuq732eBo5n0evylpe/5X3Tlig23m0x
v9jB12GaoaqW/zEbgvGLqDSt4suWItyPOhBRvHDJx+jQsJjpMYptMCe8pUeSVgY4
ovd/RzkCgYEAvD3LX2Khp3d9TknT9vPNrsQYtdX5sVCcobqIvXRxmTdG9Sc2qblz
H2mwHExEewgmdQSiopwx3Njlzc7DKYYJwkDvcE9IxLBpOmAYAxHwGSawLZvzgTAL
v6X4P7eQZ1rcsQEAsq9r5bUMG4poOW8F1WgVXnYYtQxO06T1jgZ477kCgYEAyBQk
U/30Fbzpf14MP4XbkWnT/SpDYtXmX8uc2NbZQ03z72XnvQm2DzLUy/brw6AK08Ml
9TroDU6PqcKYZfseryrgXVFvG/g9EfOkB9+27vpPrVUF2odZEeIVTVBwwUbgddYz
SSks0E5QsWiiTY4p9YcHo6hiJdX0NZNnjfa/EecCgYBAy8iYodvhSHlCnJkw9YVE
dk3HMcuMZKI17X6qME32Hpf3RTNEwwhEtN2hMAOWkhyixSCydq+XRLX93QFC5tev
HSkOcMwsoEjohjFdxSvvjGiymm78dixlIN1OGYLEgPtclmrGFyo93M85H7B2rKfG
aNiKNn6Uu5LauXqpE8NHSQKBgCozTWJF2zjGir1pmc3ALwqhtqvcQTBUi23DJYb6
8gJnK79f0BwoMzVLdGS85Qdy9zWpIJVz4kQEQPr+Z2SDLfqmYYJtTbEpj7/8kqly
f0QymaGmoEBycc/6zqFrCQ1LJMbV8iVJQQGCszRoLGuNQ75cx7i2KFVwpjyypZHk
7HIbAoGAeitsUqltYkc1yCVs+knBe+16W5sRtaZhgmJbysG1mhI0J8tODmWQfAq0
aI9lk33UsydGhZSFN0lidBUegKJLN6pbxo7cOgvmOxwlvPzQd43/o/YD8+Q+qQpI
1w3cVP2b/Hh1uh/DpUFB+JtJ1d+BDaO8P1uzYPhn7UmJ6d+k37U=
-----END RSA PRIVATE KEY-----
'''

(2)RSA key的加载

rsa:

rsa_pem_public_key = '''-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAjT2dsN/esJlZAtX5z+LpkoSU3Dunv2A9zKBgYgDNgGNdAjBMY1n6
qYtPQE+tsGM5kcXwq5XT0LxNWIKFCsxSxBUfaMZ2p8nvZV1VGQZroRHR0jr9o5LT
0jY20ywz3M7I6jwPJEMQo91F4HcuF+c9MyFh9gpJ2LyIAPt61fldcxxvr2XhLYYq
NXESC3/MRnkARNzKTOtv8/5ntXoXx9ly+xq7ijNPQoZYTKlvv0MbyXB7MzsrBNR+
DCNOHNPRXJ4fgC+D33zErUnWdTy+dB9yXwfvw5R5fzLjGfKKagpM0YOJgY4pYKDz
9tlvntcJ09627Atz+uMs/j7H5MxL7twvTwIDAQAB
-----END RSA PUBLIC KEY-----'''rsa_pem_private_key = '''
-----BEGIN RSA PRIVATE KEY-----
MIIEqwIBAAKCAQEAwUCX9QInBGTtG8FpWLyOnsGoBerlUWRmD1x1Em65N5E1+IYs
htBCyIXizWQhrp8cdW0wwHQ+t8vwYJ5A+/F3L7RXt9xcKmTY73+YNnX+qE280TTp
hbZiLQ/tbgmVWgVY+4a6FxmZY+n7Zwrzzxm+7ydXU361f2AhYs/anDTcFkcg/0Cr
tq4HpFasxqgC2Jli94nNNFl2oKjgdMcg+/6QxRNgyyqWEe142L7kBAyqujOUwLGL
R/x5N/q4D/k5nTXTJ99kh1AjO5Y4k0hne6+5TWnsMrWJTUwOAZcVcjxCt4i4LC3o
KCxaLDoL7pxQ2Y36qzMxtW3RPzGloOXG4cJ1vQIDAQABAoIBAQCa1sRqPQVCEhOg
74EW5k1nika0JxcB9e2IVU5ALJMeoKybqfW3NtqrjArDAn2ySi4lMA2lxf4SicbZ
wzLSKxCSGm9GE7uNBCyFCLjOuhAGjfLBtSF+TzmuXVqhlfAiprI7JiGoLIyob2tN
jor23uwK9nyTm6yUmFKdhG5CZiGo5Ydz1lovQutaMGTOo2q0wJ3+SKfHWW/wF+NL
EtjhhTHxrt1rSLN+0kWZCRXUmEP5s1Y98H57rsZzSLGnPy6GeiKjPvB5Xr+TyYxz
QVhwi/MWskVUwwXBUqD/hGUP8/2Qpw4OVbn1YV4KTd01boCMqWUVy70PKr+OAO3b
ZMbW9+eBAoGJAPxbqvSQVr5cgBZXwogdnKGdOkUMZcyWjb2Nsltzipvar9HDzrbl
iohAoH+0jorWjEOqpmtQq62ogwTkS9ATKk5ci9JfZwwc35raSwoSIv3yFnT7SPgF
ViZcEMx6tJJ5MeNOBw34BB18L1FY+Rj99km3gvGCFxjcbE6tKZcyrRbdl8z6BH+Q
f7ECeQDECo+H0DeC7oFWASAXLOGs1iCyUHHcrlUUH3+HPDtKRLOB0pER6kVS6pG8
AcamhDpntil9wHsxz00qcgg/29HpcFfIFaRRdF5rtKfM5CxE5oB8YVFz41Bwcds2
jfzJBsxT8xFsh6TbKa50BLD1NPu3owTdj7iZxc0CgYkA5hgC0QjGPr2CgFy2X3t4
dBcyqQB71UW0qQ+Ifz/jMuX7h2xcj4DNhhw++xG7IjYrIAt5v8GHN0i9ZXlu8qJ2
4YoaZs9b2rx82OmOn/kXdKoF9dWkm5fqDAHHw1liSWc9qH5dikwIHIY9cpOIVFRC
+sXbG688tgtMqZPTpyuqjH2xSlDwRwuOkQJ4IAitvX6bo4x/m+MhMEhINCrlOt4E
TRA7nMcs2pdQBOnG/16+D9RdMZhc6gDMSidvN8U/cGoEd3YtYNMzX+P2oBOYdHx8
1kaSqzzg8o0SYsvbkPeCDNLHMSiZrodzGBJBTzJ31Wkw2hMsi468r8TRoQdFY0L5
4j69AoGJAPKC2PPlMZPNcER7nn3GOuB49feFvb4sAQluvxktpNy5WrKAOTKmQ1Z+
Wu5jJjnbf1/oUo3jjf9/JrA4SzwCo++3xsmpMzRPTMwfXdDDRxXjgRzykDOJh62F
+3meSBC/6GGcHshyQgO3eFTsSUaKakWLc2syysGf6m+BwMvccg3wYCs86MFjL4E=
-----END RSA PRIVATE KEY-----'''public_key = rsa.PublicKey.load_pkcs1(rsa_pem_public_key.encode("utf-8"))
private_key = rsa.PrivateKey.load_pkcs1(rsa_pem_private_key.encode("utf-8"))
print(public_key)
print(private_key)'''
PublicKey(17829984972447729021527877285193593735051882228040901581384436018669347572224617775276817324409666335884008124816757793347971493627920641303906176123024310323007025931252496942016711475798497586531248081753723090444274525198974674544068706764442919477299328439217146594506537330770536246479018519856561806841878663964199137669390423879205827672021757765528305049010595592188923326109284527843777348784693193014872032080508606017203081149290801858698846557412490167618828159417486912664666420540962131138570470351653626452975889937233327237276790308477876290414791160188649896415462600746751729971823750125791353777999, 65537)
''''''
PrivateKey(24395845141023207019886428965352401990553951732053258637082398179057258286793001898107421683012969898690514314973917366297528450492638229847307571651018054805943234907448519468859872390686272808447025629926697286540233009327889256451235754617347208569572416060318958246204285590705644193430982121714801067126834130563471938667745803252228501984483552301521772579720240756906875259273795993289918742164004714645600576014070780712075052731255445333858543585249040862766280294800091330396523618305293498930075259336173201724813402937872036387201838325932923206887822644688394530843026709661306080984108703923508959409597, 65537, 19546604640968134040530332254614258030181241214125098967502277009663192282824977183417317127348078938313302511242205180345197658351289095461832561566671621494119036040559100314476279036802663917658014798166697812170646128443588581354874185192439414712120597026524688305967423537359863536580698185258671305195277886992156218632565079580621476708768641449795639585106943462344681880183023251557280147166895267598774531141107700646585358930328963964484257165645796878338343746296752787160647669488120836900350748137039079033771243497839567967513740886783943634529307691640036633983236783132966489558048051186051120097153, 3268981983368171895774772730584067776052611603190787663668761033380092932610532884146489565148070083003628502369964996366536149039486331474331925345659950581047764039044568240581587068921252287736992548571784048476413481103664853058619081416846081571483098759574372537172709822586076894386788771174808441580228710479721816686513,
7462826428883258872866783371981846897295880917243123538127455947888620961877936663736176214828681245450903652649973683673381681703832934207926246235908412072074084107095904692125176048978923363656405217123616863196400269135939472302291679710143176708392022352709316681240588938355181995469)
'''

pycryptodome:

rsa_pem_public_key = '''-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAjT2dsN/esJlZAtX5z+LpkoSU3Dunv2A9zKBgYgDNgGNdAjBMY1n6
qYtPQE+tsGM5kcXwq5XT0LxNWIKFCsxSxBUfaMZ2p8nvZV1VGQZroRHR0jr9o5LT
0jY20ywz3M7I6jwPJEMQo91F4HcuF+c9MyFh9gpJ2LyIAPt61fldcxxvr2XhLYYq
NXESC3/MRnkARNzKTOtv8/5ntXoXx9ly+xq7ijNPQoZYTKlvv0MbyXB7MzsrBNR+
DCNOHNPRXJ4fgC+D33zErUnWdTy+dB9yXwfvw5R5fzLjGfKKagpM0YOJgY4pYKDz
9tlvntcJ09627Atz+uMs/j7H5MxL7twvTwIDAQAB
-----END RSA PUBLIC KEY-----'''rsa_key = RSA.import_key(rsa_pem_public_key)

三、RSA库的加密与解密

(1)RSA的加密与解密

rsa:

data = "rsa test"
# rsa encrypt test
encrypt_data = rsa.encrypt(data.encode("utf-8"), public_key)
print(encrypt_data)
print(base64.b64encode(encrypt_data).decode("utf-8"))'''
b'\x8a\x15\xccy\xfd\xe3\x90\xa9\x1c\xa5\xd7\xf4w\\F\x87\xdcJ,*\x1cp\xf6\x9b\xb0?R\xe8\x8a\xeb\xdc\xa1n\x1f\x87F\xd3z\xeb\x87\x82x\xf04x\xcd\xed\x83\xde \r\x19\x83\xb3X\xcd\xf9\x11\xf1\xfc\x0f,\xd6\x9c\x9a\x90\x902E|![\xc5\xbfM\\\x84\xfa\xf7J\xb9U\'\x16k\x02\x98;`\xfd\xd2Z\x03\xba\xef\xbe5\x89"\xa8gy{\x177\xd1\xc7\x97\x9d\xda\x07Y\rR\xf7\x85=a\xb9&\x1d\xa1-tYU8\xb4\xeb\xdc\'\x8c\x10\xb9<?\xec\\3\xcb\x9a\xa6\xff\xd5\xe9\x94\xc3\x17a\x03lqB\xca\x8e\xd1P\xf4\xde(\x160\xbc\x18\x16,\xfeLCF\xc6a\\s;\xdb\x01\xcaK 6\x8a\x03i\x1d>\xdd\xab\xf0\x96\xbf\xe8\xe2\x96QZ]\xee\xdco\xce\xe3L\x98\xbd\xda\x15Rnk\xb3\xfe\xba\xb3\xe1\xaa\xebo\xffC\x7fp.\x07o`_;2\x88\x085\x9f\xd0\x86\x16\xa8\xc7N\xe7t\xf8%\x9b\xd7\n.V\xb5\x8c\x86u\x08u\x9b\x7f'
''''''
ihXMef3jkKkcpdf0d1xGh9xKLCoccPabsD9S6Irr3KFuH4dG03rrh4J48DR4ze2D3iANGYOzWM35EfH8DyzWnJqQkDJFfCFbxb9NXIT690q5VScWawKYO2D90loDuu++NYkiqGd5exc30ceXndoHWQ1S94U9YbkmHaEtdFlVOLTr3CeMELk8P+xcM8uapv/V6ZTDF2EDbHFCyo7RUPTeKBYwvBgWLP5MQ0bGYVxzO9sByksgNooDaR0+3avwlr/o4pZRWl3u3G/O40yYvdoVUm5rs/66s+Gq62//Q39wLgdvYF87MogINZ/Qhhaox07ndPglm9cKLla1jIZ1CHWbfw==
'''# rsa decrypt test
decrypt_data = rsa.decrypt(encrypt_data, private_key)
print(decrypt_data.decode("utf-8"))
# rsa test

pycryptodome:

data = "rsa test"
# RSA encrypt
cipher = new(rsa_key)
encrypt_data = cipher.encrypt(bytes(data, "utf-8"))
encrypt_base64_encode_data = base64.b64encode(encrypt_data)
print(encrypt_data)
print(encrypt_base64_encode_data)'''
b'5\xa4k1"D\xe9\xba\x10\xe6r\xef#y\xcew\x9e\x81$K\x93\xec\x87\x9d\x84\xd1\xf5\xd5\xa2\xaf\x15\xf2?\xdd\xae\xd4\xc8\x88\xaa\x91\x02-Z\xd6u\x80\x16\xc2\xa2B\xf2N\x90\x01\xef*\xbf\x9a~\xa0\xe1\x8f\x98Sj~\xd3}\xd5~s\\\xd0\xe8\xe2\xe9\'c@\xf9\xe5\x16\xb1\x059\x10~\xe7\x00c\x19\xfd^6\xd8\xa5\x15\xbd\xc7\xbc\xae{\x05q\x94\xb9%\xbcm\x1a\x93>\x18j\xcb\xf1\x08\xaa\x87\x93\xc2\xc0\xef\xfc\x8f\xe3\xe0u\x1f\xc0\xdd\xfd\x8e\x8a\xac\x0e\xf8\xca4\xc7\xe2\'\xcb\xf6\xf5Z\x04\x9e\x17\xa34\x16\xbf/\xcere\x84\xcau\x1d\xbf\xf7+\xff\xa4\x92\xdc\xe80\x8a\xc7\xeb\xa9\x9c7\xd7\xfbN\xb4H|\xfb\xf5\xeb}\xad\n\xa2\x9c\x98\x9ft\x17-\x1dS-\n*,\x94&j\x88\x1d\x8dG\x8a\xb6qs\xb7\xf7\xfe\x9c\xbe\xf3\x8f0\xd5\x06\x08\x02\xc8\xd5\xee22\xb6\xe9\xa1\xebR\x1cp\x9a\xd6Y\xfb\x0eyv|\x85A~\x16\xd9]\xa0~\xfb\xfb\xd0E'
''''''
b'NaRrMSJE6boQ5nLvI3nOd56BJEuT7IedhNH11aKvFfI/3a7UyIiqkQItWtZ1gBbCokLyTpAB7yq/mn6g4Y+YU2p+033VfnNc0Oji6SdjQPnlFrEFORB+5wBjGf1eNtilFb3HvK57BXGUuSW8bRqTPhhqy/EIqoeTwsDv/I/j4HUfwN39joqsDvjKNMfiJ8v29VoEnhejNBa/L85yZYTKdR2/9yv/pJLc6DCKx+upnDfX+060SHz79et9rQqinJifdBctHVMtCioslCZqiB2NR4q2cXO39/6cvvOPMNUGCALI1e4yMrbpoetSHHCa1ln7Dnl2fIVBfhbZXaB++/vQRQ=='
'''# RSA decrypt
encrypt_base64_decode_data = base64.b64decode(encrypt_base64_encode_data)
decrypt_data = cipher.decrypt(encrypt_base64_decode_data, "Error")
print(encrypt_base64_decode_data)
print(decrypt_data.decode("utf-8"))'''
b'5\xa4k1"D\xe9\xba\x10\xe6r\xef#y\xcew\x9e\x81$K\x93\xec\x87\x9d\x84\xd1\xf5\xd5\xa2\xaf\x15\xf2?\xdd\xae\xd4\xc8\x88\xaa\x91\x02-Z\xd6u\x80\x16\xc2\xa2B\xf2N\x90\x01\xef*\xbf\x9a~\xa0\xe1\x8f\x98Sj~\xd3}\xd5~s\\\xd0\xe8\xe2\xe9\'c@\xf9\xe5\x16\xb1\x059\x10~\xe7\x00c\x19\xfd^6\xd8\xa5\x15\xbd\xc7\xbc\xae{\x05q\x94\xb9%\xbcm\x1a\x93>\x18j\xcb\xf1\x08\xaa\x87\x93\xc2\xc0\xef\xfc\x8f\xe3\xe0u\x1f\xc0\xdd\xfd\x8e\x8a\xac\x0e\xf8\xca4\xc7\xe2\'\xcb\xf6\xf5Z\x04\x9e\x17\xa34\x16\xbf/\xcere\x84\xcau\x1d\xbf\xf7+\xff\xa4\x92\xdc\xe80\x8a\xc7\xeb\xa9\x9c7\xd7\xfbN\xb4H|\xfb\xf5\xeb}\xad\n\xa2\x9c\x98\x9ft\x17-\x1dS-\n*,\x94&j\x88\x1d\x8dG\x8a\xb6qs\xb7\xf7\xfe\x9c\xbe\xf3\x8f0\xd5\x06\x08\x02\xc8\xd5\xee22\xb6\xe9\xa1\xebR\x1cp\x9a\xd6Y\xfb\x0eyv|\x85A~\x16\xd9]\xa0~\xfb\xfb\xd0E'
''''''
rsa test
'''

Python:RSA秘钥生成与加密解密整理相关推荐

  1. RSA密钥生成、加密解密、数据签名验签

    公钥.私钥生成 准备工作,基础的帮助类 使用java代码生成公钥私钥 使用openssl生成公钥私钥 加解密 数据签名及验签 数据加解密及签名验签测试 注意项 公钥.私钥生成 准备工作,基础的帮助类 ...

  2. python对称加密_【Python】 基于秘钥的对称加密

    [Crypto] 关于用python进行信息的加密,类似的解决方案有很多比如用base64编码进行encode,再或者是hashlib来进行hash.但是还缺少一种明明场景很简单的解决方案,就是把利用 ...

  3. js实现在线RSA公钥私钥对生成,加密/解密

    具体参考:在线RSA密钥生成,加密解密

  4. java支付宝当面付接口_支付宝当面付秘钥生成教程(加对接案例)

    总是有小伙伴犯愁支付宝当面付的秘钥生成,看着挺高大上,实际上不是很麻烦,给大家分享一下生成过程,以及对接我们伟大的sspanel的方法 准备 开通了支付宝当面付的账号一枚(本人代开,50大洋,地址:联 ...

  5. 教你如何使用 Python 将 pdf 文档进行 加密 解密——python实用小技能分享

      上次说了怎么将word转换为pdf格式 及 实现批量将word转换为pdf格式(点击这里),这次我又get到一个新技能–使用 Python 将 pdf 文档进行 加密 解密,哈哈哈 希望帮到更多人 ...

  6. 【加密与解密】Openssl 生成的RSA秘钥如被C#使用解密

    openssl生成的RSA公私钥对保存一个pem文件中,生成时可以选择加密与不加密,如果要提取私钥需要用到openssl rsa进行提取,之后用c#转换为xml之后再对加密数据进行解密,详细如下: 1 ...

  7. python3 rsa加密_python3产生RSA秘钥对并执行加解密操作详解

    加密使用的是公钥对数据进行加密,而且当你使用一把1024bit的rsa公钥的时候,你一次只能加密最多117byte的数据,如果数据量超过这个数,可能会涉及到对数据进行分段加密的问题.而且现在rsa 1 ...

  8. php RSA非对称加密秘钥生成

    非对称加密RSA在项目中比较常用,需要公钥和私钥,这里就进行一对钥匙的生成 RSA公钥私钥生成 载入拓展包 composer require phpseclib/phpseclib 项目引入 < ...

  9. md5加密解密代码_Python内置方法实现基于秘钥的信息加解密

    点击关注州的先生 精彩不容错过 在实际编程开发中,我们会使用到各类的加密算法来对数据和信息进行加密.比如密码中比较常见的MD5加密,以及AES加密等等.对于密码认证来说,MD5加密是比较适合的,因为其 ...

  10. daoi php_使用php生成RSA公钥私钥及进行加密解密和签名验证

    这篇文章主要介绍使用PHP开发接口,数据实现RSA加密解密后使用,实例分析了PHP自定义RSA类实现加密与解密的技巧,非常具有实用价值,需要的朋友可以参考下. 简单介绍RSA: RSA加密算法是最常用 ...

最新文章

  1. 龙果支付 mysql_龙果支付系统搭建与部署
  2. linux下运行时链接库的路径顺序
  3. Stanford UFLDL教程 深度网络概览
  4. 从 Flink Forward Asia 2021,看Flink未来开启新篇章
  5. u-boot工作流程
  6. 微信小程序“信用卡还款”项目实践
  7. 整合SSH框架实现简单登录
  8. 钓鱼网站新花招 福彩赌球成噱头
  9. 人脸识别-倍加信梯控控制
  10. Google 黑板报: 哀悼与团结的曲线
  11. *陶瓷电容、铝电解电容、钽电容、固体电容的讲解
  12. 优达(Udacity)-机器学习基础-数据集与问题(安然数据集)
  13. 在校外,如何免费下载知网上的文献论文的方法
  14. U盘启动安装CentOS Linux系统
  15. 九种卫星地图的快速比较和选择方法
  16. 园林技术计算机应用技术,自考本科园林:2011年4月02316计算机应用技术历年真题及答案...
  17. 北斗三号频点_北斗三代B2a频点软件接收机的设计
  18. 腾讯 阿里 华为的岗位薪资情况概述
  19. linux系统安装内存测试,一种Linux系统下基于IDK内存注错的测试方法及系统与流程...
  20. Html+Css+js实现春节倒计时效果(移动端和PC端)

热门文章

  1. 学生用计算机的使用技巧,选学生笔记本电脑的小窍门
  2. Python turtle库如何瞬间完成作图?难道只难像海龟一样慢慢爬吗?
  3. WithMath|无穷级数一:定义理解与正项级数
  4. DarkComet RAT简介
  5. Android P 禁用OTG U盘使用
  6. Cousera- software security
  7. Cocos2d-x-3c 设计之路 CocosBase CocosNet CocosWidget
  8. Lake Shore—224 型温度监测器
  9. Difference between Static video and Single image ?静态视频和单张图像的区别
  10. 计算机win7怎么更改前后面板,解决机箱前置面板没声音(xp/win7图文教程)