zoukankan      html  css  js  c++  java
  • 基于YII和OPENSSL 实现非对称加密,找回密码功能

    在yii框架下建一个控制器
    文件/controllers/OpensslController.php 代码如下. 有备注

    <?php
    namespace appcontrollers;
    use yiiwebController;
    class OpensslencodeController extends Controller
        public function actionCreatekey(){
            //1.创建一个私钥资源
            $key = openssl_pkey_new();
            //2.保存私钥
            //openssl_pkey_export($key, $out);//$out == 下面这么写入.txt的文本内容
            openssl_pkey_export_to_file($key, './private.txt');
            //3.c取出公钥
            $pub_str = openssl_pkey_get_details($key)['key'];
            //4.保存公钥。提示成功
            file_put_contents('./public.txt', $pub_str);
            return  '还在等什么呢,赶紧去加密吧!<a href="'.yiihelpersUrl::to(['opensslencode/encode','Get参数1'=>'参数1的结果']).'">快来点我</a>';
        }
        public function actionEncode(){
            //原id  123
            $id = '123';
            //取出公钥,进行加密
            $pub_obj = openssl_get_publickey(file_get_contents('./public.txt'));
            //加密
            openssl_public_encrypt($id, $encode_id, $pub_obj);
            //URL传递第一步,base64; 
            $url = base64_encode($encode_id); //var_dump($url);
            var_dump($url);
            //return '<a target=_blank href="'.yiihelpersUrl::to(['opensslencode/decode','code' => $url]).'">加完密了。点击我。找回密码</a>';
            return '<a target=_blank href="/web/?r=opensslencode/decode&code='.urlencode($url).'">加完密了。点击我。找回密码</a>';
              
        }
        public function actionDecode(){
            //接到传递过来的 base64之后的code
            $code = ( yii::$app->request->get('code'));
            //base64解码
            $encode = base64_decode($code);//
            //开始解密,接下来先获取私钥(因为刚才 是 用的公钥加的密)
            $private_key = openssl_get_privatekey(file_get_contents('./private.txt'));
            //私钥解密
            openssl_private_decrypt($encode, $result, $private_key);
             
            return '用户id是'.$result.';这个结果,别人不可能解出来。只有我能解出来。所以说。这个链接是 他本人,从他本人的邮箱中点击的。 相对来说 。安全的很。可以让他直接修改。';
        }
    }
  • 相关阅读:
    linux常用服务安装部署
    linux系统基础优化及常用命令
    linux文档和目录结构
    【BZOJ2510】弱题
    【BZOJ3495】PA2010 Riddle
    算法笔记——2-SAT
    路面修整的题解
    三角形的题解
    流星雨的题解
    计算的题解
  • 原文地址:https://www.cnblogs.com/cnn2017/p/6782254.html
Copyright © 2011-2022 走看看