非对称加密提交表单到PHP

首先用openssl工具生成一对RSA非对称密钥

openssl genrsa -out rsa_1024_priv.pem 1024
openssl rsa -pubout -in rsa_1024_priv.pem -out rsa_1024_pub.pem

然后在前端引入jsencrypt库,用于非对称加密,再绑定submit的onclick事件,对表单需加密数据进行加密处理

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="/controller.php" id="form" method="post">username:<input type="text" name="username">password:<input type="password" name="password"><input type="submit">
</form>
</body>
<script src="http://cdn.bootcss.com/jsencrypt/2.3.0/jsencrypt.min.js"></script>
<script>var form_ele = document.getElementById('form');var password_ele = form_ele.querySelector('[name=password]');var submit_ele = form_ele.querySelector('[type=submit]');submit_ele.onclick = function (e) {var password = password_ele.value;var encrypt = new JSEncrypt();var publickey = '-----BEGIN PUBLIC KEY-----\MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7xzfMsVgFc/q1wUQ7vAUU7CD8\W5eq0PnJb0Hv7Py1GQ+qYaqiasOqOr6T2FizbzSbXd+ZirEiZVdtFX9nKK4OlVHR\zDSGulioUESLUuNQau0BeWFsEwxCMIMkAMM1fI5zDMp1PvxULdC5hFTLDXNCf5DY\Yl4Xkc1LNsa4XYQV1QIDAQAB\-----END PUBLIC KEY-----';encrypt.setPublicKey(publickey);password = encrypt.encrypt(password);password_ele.value = password;form_ele.submit();return false;}
</script>
</html>

然后就可以在后端PHP中通过openssl_private_decrypt方法解析传输过来的加密数据了

<?php$privatekey = '-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC7xzfMsVgFc/q1wUQ7vAUU7CD8W5eq0PnJb0Hv7Py1GQ+qYaqi
asOqOr6T2FizbzSbXd+ZirEiZVdtFX9nKK4OlVHRzDSGulioUESLUuNQau0BeWFs
EwxCMIMkAMM1fI5zDMp1PvxULdC5hFTLDXNCf5DYYl4Xkc1LNsa4XYQV1QIDAQAB
AoGARRGwGqCYydixPS2LlZVBIUMBlxFxpikb19YOoNvA0DQZqQgnpXoz4medNfB8
H/Qlm4hZ+LYlFYvFLqCbriwuaRl3utzULP6XxVjI8NlLbbg+sXquDAJVtiIFVpBs
VNbvBFFMG9kwM0UnfRTcLDVu5kPH8PSpkuEF6BKRS2oyXcECQQDgteyUuDvMejIR
sYHf+GDOhtY6Ncy25cEgk07xSNz84uRhMBe2lVI9rTEmE2lSVSBBfsdKwums2VOK
bj8uJQYJAkEA1ezLEKCdOWN8VZLe8jQIGoPX7kYqIo1BiaUa+8eER/tMZlCsXDPQ
wRBfRBiiDGO9KAWR8i0vRMGTYAnol31kbQJAN1DxdUbJCbQHAU4GH6FgC1csA1Zd
F6UFXsSEiWcbZ3FfMQGKxNqLTT2GPM5IfgkQkK7p1mCW74LsSsaK7QwWKQJAHJ+n
eB0VjHU8ULLrM9s0bl/Px6kJwD/IUiOOXbwPfhYo3dPTjC6+suZ+6LynCiNaTv2X
zqCvH3MLRiFtRr/XbQJBANDOugkjgfTQKt2yHWEPMp+pNeRyPIycuHQq+ejoTp+G
y0SXaEGYTNdLpZ4D1mCVea/4qnhlnW8ir7KEC6ecI0I=
-----END RSA PRIVATE KEY-----';if (openssl_private_decrypt(base64_decode($_POST['password']), $decrypted, $privatekey)) {echo $decrypted . "\n";
} else {echo 'error';
}

非对称加密提交表单到PHP相关推荐

  1. php selesium,非对称加密提交表单到PHP

    非对称加密提交表单到PHP 首先用openssl工具生成一对RSA非对称密钥 openssl genrsa -out rsa_1024_priv.pem 1024 openssl rsa -pubou ...

  2. php ajax 重复提交,ThinkPHP防止重复提交表单的方法实例分析

    本文实例总结分析了ThinkPHP防止重复提交表单的方法.分享给大家供大家参考,具体如下: 为什么会有表单重复的坑 在开发中,如果一个新增或修改的表单,在后台完成数据库操作后我们设定的不是跳转到其他页 ...

  3. python自动登录并提交表单_用python模拟登录(解析cookie + 解析html + 表单提交 + 验证码识别 + excel读写 + 发送邮件)...

    老婆大人每个月都要上一个网站上去查数据,然后做报表. 为了减轻老婆大人的工作压力,所以我决定做个小程序,减轻我老婆的工作量. 准备工作 1.tesseract-ocr 这个工具用来识别验证码,非常好用 ...

  4. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作

    上一节,我们了解了如何定位元素,其实也有涉及对于元素的操作,这一节我们就详细的介绍一下对于元素的操作和对于浏览器的一些操作 一.对于元素的基础操作: clear():清除输入框内的文本 send_ke ...

  5. php表单退出怎么写,PHP提交表单失败后如何保留填写的信息

    [导读]本文章来给各位同学介绍PHP提交表单失败后如何保留填写的信息一些方法总结,最常用的就是使用缓存方式了,这种方法如果网速慢是可能出问题的,最好的办法就是使用ajax了.1.使用header头设置 ...

  6. JQ+ajax 提交表单不跳转页面

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 代码 <div class="apply_box"><h1>合作申 ...

  7. VIEW层AJAX提交表单到Controller的实体(AJAX传递序列化的输入元素)

    在MVC环境中,AJAX方式添加一个对象,这个对象在Models中是一个视图模型,在前台显示时是这样的代码: <%using (Html.BeginForm())       { %>   ...

  8. php ajax弹出框传值,PHP_Yii2.0 模态弹出框+ajax提交表单,如题 我们使用模态弹出框+ajax - phpStudy...

    Yii2.0 模态弹出框+ajax提交表单 如题 我们使用模态弹出框+ajax提交表单 首先我们把index视图的create按钮添加data-toggle 和 data-target. 代码如下: ...

  9. html提交表单到Servlet

    源码地址 https://github.com/YouXianMing/Java-Web-Study/tree/master/Servlet-Form 演示效果(注意post与get提交方式浏览器地址 ...

  10. java jquery提交表单_Jquery ajax提交表单几种方法

    在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$('#表单ID').serialize();就行了,下面我来介绍两个提交表单数据的方法. ...

最新文章

  1. 用snap在ubuntu上构建 Microk8s,使用kubectl,部署应用
  2. DX使用随记--ImageComboBoxEdit
  3. appium===元素定位
  4. kafka学习(一)初识kafka
  5. vb 如何给静态变量赋初值
  6. 分布式系统原理 之6 两阶段提交协议
  7. MYSQL的函数有哪些?(4.2时间与日期函数)
  8. 设计模式---4(抽象工厂模式的概念,产品组和产品等级的概念,抽象工厂模式的实现)
  9. discuz x2.5插件开发傻瓜图文教程,用demo说话
  10. creator qt 字体太小_qt ttf 字体太小的解决方法
  11. JAVA简介及环境配置(复习)
  12. linux tomcat war解压吗,Tomcat 何时解压war包
  13. 10款非常棒的开源论坛系统推荐
  14. 想自学HCIE,有什么好的书籍推荐吗?
  15. 【数据结构试验】树的基本操作
  16. 五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(三)极大极小搜索和α-β剪枝算法
  17. win7 win8 64位系统上装CAD2008挂燕秀外挂的办法
  18. 过拟合与欠拟合及解决方法
  19. H5前端学习之一HTML和CSS基础认识
  20. 2022Android春招,2022最新阿里Android高级面试题及答案

热门文章

  1. Program Variant Scheduling job
  2. LinkButton回发报错__doPostBack('……','') 缺少对象
  3. 业务员的3个经典故事
  4. 使用xampp和tiki搭建内网wiki
  5. Deskew Technologies Gig Performer 4 Mac(现场调音机架)
  6. Mac电脑设置鼠标主按钮的方法?
  7. Linux 最常用 的150 个命令汇总
  8. Linux wpa_cli 调试方法
  9. 我搭的神经网络不work该怎么办!看看这11条新手最容易犯的错误
  10. 步入restful之前先了解一下localStorage