美文网首页
laravel5.2 + js Rsa加密、解密

laravel5.2 + js Rsa加密、解密

作者: 小葫芦lu | 来源:发表于2017-03-10 15:00 被阅读538次

    在laravel工程app文件夹下新建Tools文件夹,新建Rsa.php,如下

    <?php
    /**
     * Created by PhpStorm.
     * User: and
     * Date: 2017/3/10
     * Time: 13:11
     */
    namespace App\Tools;
    
    class Rsa {
        const PRIVATE_KEY = '-----BEGIN PRIVATE KEY-----
    PRIVATE_KEY
    -----END PRIVATE KEY-----';
        const PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----
    PUBLIC_KEY
    -----END PUBLIC KEY-----';
    
        public function index() {
            $pwd = 'abcdefg';
            $password = $this->enRSA_private($pwd);
            echo 'mm =  '.$password;
            echo '<br>';
            $password = $this->deRSA_public($password);
            echo 'mm =  '.$password;
        }
    
        /*-----------------------------  公钥加密, 私钥解密 --------------------------------------*/
        /*
         * RSA公钥加密
         * 使用私钥解密
         */
        public static function enRSA_public($aString) {
            $pu_key = openssl_pkey_get_public(self::PUBLIC_KEY);//这个函数可用来判断公钥是否是可用的
            openssl_public_encrypt($aString, $encrypted, $pu_key);//公钥加密,私钥解密
            $encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
            return $encrypted;
        }
        /*
         * RSA私钥解密
         * 有可能传过来的aString是经过base64加密的,则传来前需先base64_decode()解密
         * 返回未经base64加密的字符串
         */
        public static function deRSA_private($aString) {
            $pr_key = openssl_pkey_get_private(self::PRIVATE_KEY);//这个函数可用来判断私钥是否是可用的
            openssl_private_decrypt(base64_decode($aString), $decrypted, $pr_key);//公钥加密,私钥解密
            return $decrypted;
        }
    
        /*-----------------------------  私钥加密, 公钥解密 --------------------------------------*/
        /*
         * RSA私钥加密
         * 加密一个字符串,返回RSA加密后的内容
         * aString 需要加密的字符串
         * return encrypted rsa加密后的字符串
         */
        public static function enRSA_private($aString) {
            //echo "------------",$aString,"====";
            $pr_key = openssl_pkey_get_private(self::PRIVATE_KEY);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
            openssl_private_encrypt($aString, $encrypted, $pr_key);//私钥加密
            $encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
            //echo "加密后:",$encrypted,"\n";
            return $encrypted;
        }
        /*
         * RSA公钥解密
         */
        public static function deRSA_public($aString) {
            $pu_key = openssl_pkey_get_public(self::PUBLIC_KEY);//这个函数可用来判断公钥是否是可用的
            openssl_public_decrypt(base64_decode($aString), $decrypted, $pu_key);//公钥加密,私钥解密
            return $decrypted;
        }
    }
    

    其他类使用

    1. 引用
    use App\Tools\Rsa;
    

    2 .使用

            $password = Rsa::deRSA_private($pwd);
    

    前端js使用公钥加密

    1. 引用 JSEncrypt.js文件
    2. 声明+设置
    var encrypt = new JSEncrypt();
    var publicKey = "-----BEGIN PUBLIC KEY----------PUBLIC KEY END PUBLIC KEY-----";
    encrypt.setPublicKey(publicKey);
    
    1. 加密
     var newPwd = encrypt.encrypt($pwd);
    

    相关文章

      网友评论

          本文标题:laravel5.2 + js Rsa加密、解密

          本文链接:https://www.haomeiwen.com/subject/huangttx.html