前端对用户名密码加密处理,后端解密

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

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

js资源地址链接:https://pan.baidu.com/s/1kfQZ1SzP6DUz50D--g_ziQ

提取码:1234

前端代码

javascript 复制代码
<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>

后端使用php获取数据

php 复制代码
$input = input("request.", '', 'trim'); 
$obj=get_object_vars(decrypt($input['key'],'abcdefgh12345678','abcdefgh12345678'));
unset($input['key']);
$input=array_merge($input,$obj);

后端解密方法如下

php 复制代码
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); 
	
}
相关推荐
哆啦A梦15881 小时前
[前台小程序] 01 项目初始化
前端·vue.js·uni-app
小周同学@4 小时前
谈谈对this的理解
开发语言·前端·javascript
Wiktok4 小时前
Pyside6加载本地html文件并实现与Javascript进行通信
前端·javascript·html·pyside6
一只小风华~4 小时前
Vue:条件渲染 (Conditional Rendering)
前端·javascript·vue.js·typescript·前端框架
柯南二号4 小时前
【大前端】前端生成二维码
前端·二维码
程序员码歌4 小时前
明年35岁了,如何破局?说说心里话
android·前端·后端
博客zhu虎康5 小时前
React Hooks 报错?一招解决useState问题
前端·javascript·react.js
灰海5 小时前
vue中通过heatmap.js实现热力图(多个热力点)热区展示(带鼠标移入弹窗)
前端·javascript·vue.js·heatmap·heatmapjs
王源骏6 小时前
LayaAir鼠标(手指)控制相机旋转,限制角度
前端
大虾写代码6 小时前
vue3+TS项目配置Eslint+prettier+husky语法校验
前端·vue·eslint