码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 前端对用户名密码加密处理,后端解密


    一. 正常表单提交如图,可以看见输入的用户名密码等

    在这里插入图片描述

    二. 使用crypto-js.min.js进行前端加密处理

    js资源地址链接:https://pan.baidu.com/s/1kfQZ1SzP6DUz50D–g_ziQ
    提取码:1234
    前端代码

    <script type="text/javascript" src="/js/crypto-js.min.js"></script>
    <script type="text/javascript">
    function encrypt(str, key, iv) {
    	//密钥16位 
    	var key = CryptoJS.enc.Utf8.parse(key); 
    	//加密向量16位 
    	var iv = CryptoJS.enc.Utf8.parse(iv); 
    	var encrypted = CryptoJS.AES.encrypt(str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); 
    	return encrypted; 
    	
    }
    
    
    </script>
    
    <script>
        layui.use('form', function () {
            var form = layui.form;
            form.render();
            form.on('submit(LAY-user-login-submit)', function (data) {
            //表单可使用var data = $(“form”).serialize();
                var field = data.field;
                var jsonstr=JSON.stringify(field);
                var enjsonstr=encrypt(jsonstr,'abcdefgh12345678','abcdefgh12345678');
                var enstr="'"+enjsonstr+"'";
                $.post("{:url('admin/site/login')}",{key:enstr}, function (ret) {
                	//成功
                    if (ret.code == 0) {
                        layer.msg(ret.msg, { time: 1000 }, function () {
                            window.location.href = ret.url;
                        })
                    } else {
                        layer.msg(ret.msg, { time: 1000 });
                        setTimeout(function (){
     
    						 window.location.reload();
    						}, 2000);
                        
                        
                    }
                });
            });
        });
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    后端使用php获取数据

    $input = input("request.", '', 'trim'); 
    $obj=get_object_vars(decrypt($input['key'],'abcdefgh12345678','abcdefgh12345678'));
    unset($input['key']);
    $input=array_merge($input,$obj);
    
    • 1
    • 2
    • 3
    • 4

    后端解密方法如下

    function decrypt($data, $key, $iv) {
    	$decrypted = openssl_decrypt(base64_decode($data), 'AES-128-CBC', $key, true, $iv); 
    	$json_str = rtrim($decrypted, "\0");
    	return json_decode($json_str); 
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    什么是Barr-C?
    nginx的三种安装方式
    魔兽mangos用户数据自动备份脚本
    数据清洗!即插即用!异常值、缺失值、离群值处理、残差分析和孤立森林异常检测,确保数据清洗的全面性和准确性,MATLAB程序!
    rust_for_linux驱动完整版记录
    「Python」面向对象封装案例3——士兵突击(需求分析、代码演练)
    【MySQL】# 自定义变量、一行数据与多行的转换、IF函数
    python使用钉钉机器人给钉钉发送消息
    2023年亚太杯APMCM数学建模大赛ABC题辅导及组队
    Windows 环境下的 Socket 编程 4 - 基于 UDP 的服务器/客户端
  • 原文地址:https://blog.csdn.net/sang521jia/article/details/134429447
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号