18910140161

前端js后台python实现RSA非对称加密

顺晟科技

2021-06-16 10:58:50

466

先熟悉使用在后台使用南非共和国(南非共和国)实现秘钥生产,加密,解密;

# -*- encoding:utf-8 -*-

导入base64

从加密导入随机

来自加密。密码导入PKCS1_v1_5为密码_pkcs1_v1_5

来自加密。公钥导入

# 伪随机数生成器

random_generator=Random.new().阅读

# rsa算法生成实例

rsa=RSA.generate(1024,random_generator)

#主人的秘钥对的生成

private_pem=rsa.exportKey()

#生产私钥私钥并放到文件里

open('master-private.pem ',' w ')为f:

f.write(private_pem)

public_pem=rsa.publickey().exportKey()

open('master-public.pem ',' w ')为f:

f.write(public_pem)

#用公钥加密

#被加密的数据

信息='我爱YAYA

#打开公钥文件

open('master-public.pem ')为f:

key=f.read()

rsakey=RSA.importKey(密钥)

密码=Cipher_pkcs1_v1_5.new(rsakey)

#加密时使用base64加密

cipher _ text=base64。b64编码(密码。加密(消息))

# cipher_text=cipher.encrypt(消息)

打印密码文本

#用私钥解密

#打开秘钥文件

open('master-private.pem ')为f:

key=f.read()

rsakey=RSA.importKey(密钥)

密码=Cipher_pkcs1_v1_5.new(rsakey)

# text=密码。解密(密文,随机生成器)

#使用base64解密,(在前端射流研究…加密时自动是base64加密)

text=密码。解密(base64。b64解码器(密码文本),随机生成器)

打印文本

前后台共同完成南非共和国(南非共和国)非对称加密:大致思路为first:后台生产公钥私钥,next:后台把公钥给前台,than:前台用公钥加密并传送给后台,最后:后台使用秘钥解密。

first:后台生产公钥私钥

create_password.py文件

# -*- encoding:utf-8 -*-

来自加密。公钥导入

从烧瓶导入当前应用程序

从加密导入随机

# rsa算法生成实例

RANDOM_GENERATOR=Random.new().阅读

if __name__=='__main__':

rsa=RSA.generate(1024,RANDOM_GENERATOR)

#主人的秘钥对的生成

PRIVATE_PEM=rsa.exportKey()

open('master-private.pem ',' w ')为f:

f.write(PRIVATE_PEM)

打印私有_PEM

PUBLIC_PEM=rsa.publickey().exportKey()

打印公共_PEM

open('master-public.pem ',' w ')为f:

写(公共_PEM)

next:后台把公钥给前台-打开master-public.pem此文件,复制里面内容到前端(具体粘贴位置在下一步)

than:前台用公钥加密并传送给后台

#导入js,如果需要base64文件,一定要在导入加密射流研究…文件之前导入,否则会出现加密结果为假的;

#如果报type error-base64-not-a-constructor;使用http://blog.csdn.net/ziwoods/article/details/58595840解决方法

脚本src=' js/plugin/base64。js '/脚本

脚本src=' js/plugin/jsencrypt。量滴js ' type=' text/JavaScript '/脚本

//获取密码

var password=$('#pass ').val();

//获取公钥

var PUBLIC _ KEY='-BEgin PUBLIC _ KEY-MIG fma 0 gcsqgsib 3d qeba quaa 4 gnacadbiqkbgqcogdmsg 4s 20 msz 32m a1 gng2tw 4 uiegdd/dfkkozgrteajthzcxgmpp 3 eechcjsk 0 zt0 gyyyyyyyyygqnfbqmbd 37 xvnalkwjvpjgqhz fjwn82 mruzjmfgls3a x 79 zaxjznhtn 63/ys2 rua 3 QY/t5 zt5

//rsa加密

var encrypt=new JSEncrypt();

加密。SetPublickey(公钥);

密码=加密。加密(密码);//加密后的字符串

最后:后台使用秘钥解密

views.py文件

#获取密码

密码=请求。价值观。获取('密码')

open('承运人/主-私人。质子交换膜’(PEM)为f:

key=f.read()

rsakey=RSA.importKey(密钥)

密码=Cipher_pkcs1_v1_5.new(rsakey)

密码=密码。解密(base64。b64解码(密码),随机_发生器)

#如果返回的密码类型不是str,说明秘钥公钥不一致,或者程序错误

if str(键入(密码))!='type 'str'':

返回"失败"

#结果应该为我爱亚雅

打印密码

本功能模块中前端南非共和国(南非共和国)加密过程中没有使用OPEN_SSL生成模型方式进行加密(运维部署时简洁方便,并且用那种方式,传输的为16进制数据);并且前端加密数据为base64位传输到后台;后台需要导入的包等在最上面一中

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航