python RSA 相关方法

python RSA 相关方法

PKCS1 和 PKCS8格式私钥

PKCS1 和 PKCS8格式,二者表达的是同一把钥匙,对同一段内容加密/解密出来的内容完成相同.

  • PKCS1 格式
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAu6t3uO3tu6WDK3RTqLHrlNFS91TMOnAzkXNvKzRZFerl2D8A
gN4s12pEMbpe39idE2PbrNzAOgYnrV7z2sKwtOMVICHewiqy+Gal9HwJ+u4hqIqT
uqizmYgK4V9qVwgIkwLQzoivjJa1/lK6iVJGGgur04FPr4O6wJkgFpT0R78chdRY
dG/YPkKNTvWx29vimUGFOKIzijB2FD+sICoV7kp8bfQ+taLg3C2RJpyORlGFf+lh
5LL8Ak+Ux5CsjPAln0Zags7CceKPvVag785x0hXNa2Bxy12wWJ1CKFzI6jxTYwoi
sutcBIg5qRy20+fynJV1rtQC0VihH708AmUywwIDAQABAoIBAC+/RmyUjGGrkJ3j
sM1AxzFLuJIYzwUnOteMyQHzBZ9f123AiP5AiKQd80+7nRvSntQqGd/3IikhG8Mu
X1iPJCpBhERymZxJBNPSOfLkBB4FrCaXa1KYTWmIhUwl3IZcEuJkWv/RIujgB1m3
bqI1foRt57+eLMn49/C8hL96ElSWSFye9LpolvCbR+cnh+dNoqF6iOkrQ0wtXAvt
mhSCSpbSX5zdqyUewgWbssRuktCrd4DKwugzs+IBR9dciNgadbg3G5qyvjMAt6Um
AWM9ogRzcfcQnu/BnKchu6KSdDYN/xwIWFZ+4NBFuhA/M+bjq/RzJAgfQF1YA7wv
mPORpiECgYEA/N427suQClSWBys63ndAb/uPrCTKRqWh+rnlZkM9/OSJumwcLFSI
X3zTXOblPCevSqz4i3KW5QB2hVN5bSa8n7bkbGQGfULgx163HXTH2EYhGwdkrCTt
x6pXpH5SlYsA6d/5xo9s3NbYMMOnYpyoFLk4a7TZRkR3UU+SrVqGhmkCgYEAvf6G
VNm1QVHzJB4mX9Tobg3otufefUiG3PrUg+tJhVKiqKfDITqpFrkkdkQOSwm/vG6e
XVrymqaCSUORnB9+sf3tAKuBO3v5W/JzErULnchs2E4kZZBR7t8+LFJm8/SN9srF
nVioupPulC1234dhejaHzkOAdLAgFwilTeiXAksCgYEA1qp+z/IX8e0lACj+7OUn
2ukgau9AmQD7pbIywMHM2efZ1Fz6/dc1fnqlpHSPnqXB9g8pYJiC6R2fgEgBCVyd
PKky+aFgsO4ZjKcnpOYC0eOXLy7zlAA1rA88H/Ttfu5mdCUkEiCoNkJdfehbLSf4
uL8U2rrIyRJOiMSYrHnxQiECgYEAoyweeG8FkVTtad6O/IzhFevSKowW9Cg+0ziF
HcsMOHmRAyIZnsc/gyl83Cl00RNNXWrvjaPXaeSJTpy+SIRwDjPTwViKQ+kkbshZ
9f4RPPBuMpNiBOwewfVu8yfODcTBy+u4Lnt/Z123B3ncENZqjEia+BXXE+BTnxSo
y7FvR+MCgYEAjH28l1pO92zW2nxVsozzLq4LjcPSXTFRG7Kj2dSNy+WRo9Iemfd6
qMbMgRBF6haqGgLpOu+Sl6ekchBjuP/ZGCw+BkZmicwZ8oRVYMgV1NVK/aVojAWU
UOF8WFmy8dm/E6TN1wZ1l74TfAV2Y8YAz1SS2h8EF41Ydt7nNU6XSrs=
-----END RSA PRIVATE KEY-----
  • PKCS8 格式
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC7q3e47e27pYMr
dFOoseuU0VL3VMw6cDORc28rNFkV6uXYPwCA3izXakQxul7f2J0TY9us3MA6Biet
XvPawrC04xUgId7CKrL4ZqX0fAn67iGoipO6qLOZiArhX2pXCAiTAtDOiK+MlrX+
UrqJUkYaC6vTgU+vg7rAmSAWlPRHvxyF1Fh0b9g+Qo1O9bHb2+KZQYU4ojOKMHYU
P6wgKhXuSnxt9D61ouDcLZEmnI5GUYV/6WHksvwCT5THkKyM8CWfRlqCzsJx4o+9
VqDvznHSFc1rYHHLXbBYnUI1232131231iKy61wEiDmpHLbT5/KclXWu1ALRWKEf
vTwCZTLDAgMBAAECggEAL79GbJSMYauQneOwzUDHMUu4khjPBSc614zJAfMFn1/u
LoCI/kCIpB3zT7udG9Ke1CoZ3/ciKSEbwy5fWI8kKkGERHKZnEkE09I58uQEHgWs
JpdrUphNaYiFTCXchlwS4mRa/9Ei6OAHWbduojV+hG3nv54syfj38LyEv3oSVJZI
XJ70umiW8JtH5yeH502ioXqI6StDTC1cC+2123213tJfnN2rJR7CBZuyxG6S0Kt3
gMrC6DOz4gFH11yI2Bp1uDcbmrK+MwC3pSYBYz2iBHNx9xCe78GcpyG7opJ0Ng3/
HAhYVn7g0EW6ED8z5uOr9HMkCB9AXVgDvC+Y85GmIQKBgQD83jbuy5AKVJYHKzre
d0Bv+4+sJMpGpaH6ueVmQz385Im6bBwsV12343Nc5uU8J69KrPiLcpblAHaFU3lt
JryftuRsZAZ9QuDHXrcddMfYRiEbB2SsJO3HqlekflKViwDp3/nGj2zc1tgww6di
nKgUuThrtNlGRHdRT5KtWoaGaQKBgQC9/oZU2bVBUfMkHiZf1OhuDei25959SIbc
+tSD60mFUqKop8MhOqkWuSR2RA5LCb+8bp5dWvKapoJJQ5GcH36x/e0Aq4E7e/lb
8nMStQudyGzYTiRlkFHu3z4sUmbz9I32ysWdWKi6k+6UJpE9J2F6NofOQ4B0sCAX
CKVN6JcCSwKBgQDWqn7P8hfx7SUAKP7s5Sfa6SBq70CZAPulsjLAwczZ59nUXPr9
1zV+eqWkdI+epcH2DylgmILpHZ+ASAEJXJ08qTL5oWCw7hmMpyek5gLR45cvLvOU
ADWsDzwf9O1+7mZ0JSQSIKg2Ql196FstJ/i4vxTausjJEk6IxJisefFCIQKBgQCj
LB54bwWRVO1p3o78jOEV69IqjBb0KD7TOIUdyww4eZEDIhmexz+DKXzcKXTRE01d
au+No9dp5IlOnL5IhHAOM9PBWIpD6SRuyFn1/hE88G4yk2IE7B7B9W7zJ84NxMHL
67gue39lxjkHedwQ1mqMSJr4FdcT4FOfFKjLsW9H4wKBgQCMfbyXWk73bNbafFWy
jPMurguNw9JdMVEbsqPZ1I3L5ZGj0h6Z93qoxsyBEEXqFqoaAuk675KXp6RyEGO4
/9kYLD4GRmaJzBnyhFVgyBXU1Ur9pWiMBZRQ4XxYWbLx2b8TpM3XBnWXvhN8BXZj
xgDPVJLaHwQXjVh23uc1TpdKuw==
-----END PRIVATE KEY-----

PKCS8 转 PKCS1

linux系统下:

openssl rsa -in pkcs8.pem -out pkcs1.pem

其中 pkcs8.pem 表示PKCS8格式的文件,pkcs1.pem表示PKCS1格式输出.

python 加载PKCS1格式私钥

import rsa
pem = "***"
raw_string = "***"
# 加载私钥
pri_key = rsa.PrivateKey._load_pkcs1_pem(pem)
# 使用私钥对内容进行签名
signature = rsa.sign(raw_string.encode('utf-8'), priv_key=pri_key, hash='SHA-1')

python 加载PKCS8格式私钥

rsa 包只能加载PKCS1格式的私钥,如果我们的私钥是PKCS8格式的,可以使用上节方法将PKCS8 转 PKCS1再使用.

猜你喜欢

转载自www.cnblogs.com/aloe-n/p/9583909.html
RSA