有时候,我们要在web中对某些数据进行rsa签名,有一些是必须调用javascript里的加密算法,这时我们可通过python去执行javascript
要在python中调用javascript,先安装PyExecJS
sudo pip3 install PyExecJS
用法参考:https://pypi.python.org/pypi/PyExecJS
from Crypto.Hash import SHA256
import execjs
def load_jsbn():
#打开js文件
with open('./jsbn.js', 'r') as f:
source = f.read()
jsbn =execjs.compile(source)
return jsbn
JSBN =load_jsbn()
def sign(data,d,n):
hash_obj = SHA256.new(data)
print( hash_obj.hexdigest())
encrypted =JSBN.call("mymodpos", hash_obj.hexdigest(), d, n)
return int(encrypted,10).to_bytes(32,'big')
mymodpos方法是./jsbn.js中rsa的签名方法
要在python中执行javascript,必须要有js的执行环境,我们可以安装nodejs做为js的执行环境
我们布署一般用的python环境是
FROM python:3.5-alpine COPY ./requirement.txt /var/requirement.txt
要加上js执行环境,安装nodejs,在dockerfile加一条
apk add --no-cache nodejs