顺晟科技
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位传输到后台;后台需要导入的包等在最上面一中
04
2022-06
29
2021-08
28
2021-08
16
2021-06
16
2021-06
16
2021-06