<!-- 引入js文件-->
<script type="text/javascript" src="/static/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="/static/js/jsencrypt.min.js"></script>
<!-- 提交form-->
<form id="form" action="/login/" method="post">{% csrf_token %}
<div class="username">
<input id="name" type="text" name="name" placeholder="请输入用户名" required>
</div>
<div class="password">
<input id="pwd" type="password" name="password" placeholder="请输入密码" required>
<input type="hidden" value="{{ pub_key }}" id="pubkey">
</div>
<div class="yes_login"><input type="submit" value="登录" onclick="dologin();return false;" ></div>
</form>
<!-- dologin() 函数-->
<script>
function dologin() {
var pwd =$('#pwd').val();
var pubkey = $('#pubkey').val();
var jsencrypt = new JSEncrypt();
jsencrypt.setPublicKey(pubkey);
var en_pwd = jsencrypt.encrypt(pwd);
$('#pwd').val(en_pwd);
$('#form').submit();
</script>
- 加入onclick方法后,执行顺序是先onclick方法(dologin),然后是自身的submit方法,由于dologin()中*$(’#form’).submit();*提交了一次,所以会提交两次,解决方法是onclick加入return false;中断自身的第二次提交。如果dologin不写提交语句,会出现提交的内容并未经过加密的问题,即dologin方法无效。
- 注意编码格式。一是jsencrypt.setPublicKey(pubkey) 接受的公钥pubkey为pkcs#1编码的字符串格式,格式不对会导致加密失败返回false。二是加密结果为base64编码的字符串,后台解密时提交的密文格式需要用base64.b64decode(password.encode()),先变成byte,然后用base64解码。
Python django环境下使用RSA算法加密传输登录密码一、使用的包二、思路及代码分析基本思路后端代码前端代码排坑一、使用的包后端:cryptodome,base64前端:jsencrypto.min.js二、思路及代码分析基本思路View.py定义登录,GET方式打开登录页面时,动态生成RSA公私钥对,公钥以json数据的形式传到前端,保存在一个隐藏的或其他标签供jsencry...
我们在注册网站时输入的密码并不会明文存储在数据库中,而是经过加密了的,在Django中默认的加密算法是哈希算法(hashlib)。1、注册时加密将用户输入的密码写入数据库中时,经过如下处理:from django.contrib.auth.hashers import make_password...
user.password = make_password(password) # 明文密码经过
前
后端实现
加密传输(
RSA)
由于
前端使用HTTP协议, 因此产生了对于数据
加密的需求, 由于JS和
Python中
RSA秘钥产生方式的差异,踩了不少坑, 在这里记录一下.
技术栈: JS、
Python、
Django、JSEncrypt
详细记录:
# 密钥格式(公钥)
-----BEGIN PUBLIC KEY-----
# 密钥内容
-----END PUBLIC KEY-----
Django-加密签名
web应用程序安全的黄金法则是永远不要信任来自不可信来源的数据。有时,通过不受信任的介质传递数据会很有用。加密签名的值可以通过不受信任的通道安全传递,只要知道将检测到任何篡改。
Django既提供了用于签名值的低级API,也提供了用于设置和读取签名Cookie的高级API,这是web应用程序中最常见的签名用途之一。
前端:vue3.05,node14
三、
后端
后端使用pycryptodome这个模块,我试了好多文章的方法,都不管用,不要去管什么版本,什么C++
环境,直接安装这个模块就结束了,没那么多事。
pycryptodome官方文档
# 虽然安装的是pycryptodome,但是
使用方法都是一样的
# 短文的
加密解密
def jiemi(neirong):
# print
https://blog.csdn.net/ynlflixin/article/details/80272511
from django.contrib.auth.hashers import make_password, check_password
加密make_password(password明文,salt=None, hasher=‘default’)
默认salt=None, 加密方法...
利用django中pycryptodome模块进行数据加密(不对称加密,即生成公钥和私钥,前台用公钥加密,后台接收到机密数据后利用私钥解密)
注意:pycrypto,pycrytodome和crypto是一个东西,crypto在python上面的名字是pycrypto它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库;
安装好pycrytodome,可卸载另外两个放置,在代码中导入失败
可直接通过pip(pip3) installpycrytodome在线安装,也可去下载pycrytod.
1. 使用print语句输出调试信息,例如在视图函数中使用print语句输出变量值。
2. 使用Django Debug Toolbar插件,它可以在浏览器中显示有关请求和响应的详细信息,包括SQL查询和缓存命中率等。
3. 使用pdb调试器,可以在代码中插入断点,以便在运行时检查变量值和执行路径。
4. 使用日志记录,可以在代码中插入日志语句,以便在运行时记录信息。
希望这些方法能够帮助您对基于Python Django框架下的项目进行调试。