• 欢迎访问:祀与戎,国之大事,在祀与戎。 手机号码:
  • 欢迎访问:祀与戎,国之大事,在祀与戎。
  • 欢迎访问:祀与戎,国之大事,在祀与戎。祀与戎
  • 祀与戎,国之大事,在祀与戎www.siyurong.com
  • 祀与戎,国之大事,在祀与戎。如果您觉得本站非常有看点,那么赶紧使用 Ctrl+D

彭世瑜:Python实现RSA(jsencrypt)加密的两种方式

思想观点 siyurong 4年前 (2022-10-06) 2次浏览 已收录 0个评论

Python实现RSA(jsencrypt)加密的两种方式Photo by Sasun Bughdaryan on Unsplash

前言

RSA是一种常用加密算法,经常用在前端向后端发送密码的时候。

下面列举了两种实现方式,两种方式均需要提前知道公钥参数,可以通过浏览器的开发者工具,查找相关的js文件,从该文件里获取。

一、使用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)

二、通过让Python运行rsa.js文件进行加密

此方法是通过让Python运行rsa.js文件里的加密函数进行加密,相比第一种方法更纯粹一些。

首先需要下载rsa.js文件,下载地址为:gitee.com/youchuanming/

其次把下载好的rsa.js文件里的公钥参数,修改成自己的公钥参数,并进行保存。

最后运行下方代码进行加密。

import urllib.purse
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 = urllib.parse.quote(js.call('getRsaResult', 'my_passwd'))
print('password:', password)

祀与戎 , 版权所有蜀ICP备14023000号-6丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:彭世瑜:Python实现RSA(jsencrypt)加密的两种方式
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址