在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
原理:javascript加密PHP解密; 完全依赖openssl; 一. openssl 是干嘛的 OpenSSL 是一个开源项目,其组成主要包括一下三个组件:
openssl可以实现:秘钥证书管理、对称加密和非对称加密 。
二. 原理简单介绍: 3.创建一个hello.txt的文本文件,然后利用此前生成的公钥加密文件; 4.解密文件 二. jsencrypt.js这个文件定义了一个JSEncrypt方法 可以去git搜一下 对于此篇文档就不展开太多
前端页面代码: <!DOCTYPE html> <html> <head> // 引入 jquery 和 jsencrypt.js <script src="./jquery.min.js"></script> <script src="./jsencrypt.js"></script> <script type="text/javascript"> $(function () { var encrypt = new JSEncrypt(); encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0Llg1bVZhnyslfezwfeOkvnXWq59bDtmQyHvxkP/38Fw8QQXBfROCgzGc+Te6pOPl6Ye+vQ1rAnisBaP3rMk40i3OpallzVkuwRKydek3V9ufPpZEEH4eBgInMSDiMsggTWxcI/Lvag6eHjkSc67RTrj96oxj0ipVRqjxW4X6HQIDAQAB');//设置公有key var data = encrypt.encrypt("需要机密的内容"); console.log(data); $("#btn").click(function () { $.ajax({ url: '/openssl/index.php', data: "password=" + encodeURI(data).replace(/\+/g, '%2B'), //+号的处理:因为数据在网络上传输时,非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,而base64编码在传输到后端的时候,+会变成空格,因此先替换掉。后端再替换回来 type: 'post', success: function (msg) { alert(msg); } }); }); }); </script> </head> <body> <div class="main"> <input type="button" /> <hr/> 注意+好的处理 </div> </body> </html>
后台代码: <?php class Index{ public function index { if(isset($_POST['password'])) { $txt = $this->decodeing($_POST['password']); die('解密字符串:'.$txt); } } /** * 公钥加密 * * @param string 明文 * @return string 密文(base64编码) */ public function encodeing($sourcestr) { $key_content = file_get_contents('./_test_public.key'); $pubkeyid = openssl_get_publickey($key_content); if (openssl_public_encrypt($sourcestr, $crypttext, $pubkeyid)) { return base64_encode("".$crypttext); } } /** * 私钥解密 * * @param string 密文(二进制格式且base64编码) * @param string 密文是否来源于JS的RSA加密 * @return string 明文 */ public function decodeing($crypttext) { $key_content = file_get_contents('./_test.key'); $prikeyid = openssl_get_privatekey($key_content); $crypttext = base64_decode($crypttext); if (openssl_private_decrypt($crypttext, $sourcestr, $prikeyid, OPENSSL_PKCS1_PADDING)) { return "".$sourcestr; } return ; } } |
2022-08-17
2022-11-06
2022-08-17
2022-07-18
2022-07-18
请发表评论