注: 原创作者 https://zhuanlan.zhihu.com/p/158083974
加了一点自己使用时候的小坑,目的是方便以后自己回溯查看
一、使用Python的相关库进行加密
此方法是借用Python Crypto库里的RSA算法进行加密。
import base64
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pksc1_v1_5
from Crypto.PublicKey import RSA
def encrpt(password, public_key):
rsakey = RSA.importKey(public_key)
cipher = Cipher_pksc1_v1_5.new(rsakey)
cipher_text = base64.b64encode(cipher.encrypt(password.encode()))
return cipher_text.decode()
# key是公钥,需要修改成自己的之后再进行加密
key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCC//WCWUQiDiIh8GhQfEwfU9OM7khBwlXE1HGEoBNakQJcr7iUPBUPADoik8d55z4KWCMgeImV+GHjGY/h8Vpy4nZ2AqmNlbz7MAtq9ln4p4EtgAvTqA8RFxV7SORd/GYio+mPh80T+zQJJwKpkxT1uewbU9LrSbqbkEtYpg9u2QIDAQAB'
public_key = '-----BEGIN PUBLIC KEY-----\n' + key + '\n-----END PUBLIC KEY-----'
password = encrpt('my_passwd', public_key)
print('password:', password)
注意: 这里的public_key一定不要动,这个格式很重要
二、通过让Python运行rsa.js文件进行加密
此方法是通过让Python运行rsa.js文件里的加密函数进行加密,相比第一种方法更纯粹一些。
首需要下载rsa.js文件,下载地址为:
https://gitee.com/youchuanming/rsa_jsencrypt
其次把下载好的rsa.js文件里的公钥参数,修改成自己的公钥参数,并进行保存。
最后运行下方代码进行加密。
import execjs
js_file = './rsa.js' # <-- rsa.js文件地址
with open(js_file, 'r', encoding='utf-8') as f:
js_code = f.read()
js = execjs.compile(js_code)
password = js.call('getRsaResult', 'my_passwd')
print('password:', password)
如果用node.js单独执行
会报错
ASN1是一个JS解码器,可以解码任何有效的Base64编码或十六进制编码的DER或BER结构,一般浏览器已内置的有,大部分js调试器是没有的
解决方法:如上面用python库execjs执行或者直接复制浏览器执行,或者其他js调试工具