美文网首页
js加密php解密---jsencrypt

js加密php解密---jsencrypt

作者: Sugar_ping | 来源:发表于2020-08-06 08:44 被阅读0次

一. openssl

它集成了众多密码算法及实用工具

rsa加密流程;(今天只讲众多加密方式中的一种)

  1. 在当前文件夹下生成一个包含 "公钥"和"私钥" 两部分内容的文本文件; 命名test.key
    [root@iZ28pw7sv4qZ openssl]#openssl genrsa -out test.key 1024

2.将这个文本文件中的“公钥”提取出来: 命名test_pub.key
[root@iZ28pw7sv4qZ openssl]#openssl rsa -in test.key -pubout -out test_pub.key

3.创建一个hello.txt的文本文件,然后利用此前生成的公钥加密文件;
[root@iZ28pw7sv4qZ openssl]#echo "1234561122" > ./hello.txt
[root@iZ28pw7sv4qZ openssl]#openssl rsautl -encrypt -in hello.txt -inkey test_pub.key -pubin -out hello.en.txt

4.解密文件
[root@iZ28pw7sv4qZ openssl]#openssl rsautl -decrypt -in hello.en.txt -inkey test.key -out hello.de.txt

5.解析后的结果
[root@iZ28pw7sv4qZ openssl]# cat hello.de.txt

二. js加密php解密

前端代码:

<!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" id="btn" value="点我" />
        <hr/> 
        注意+好的处理
    </div>
</body>
</html>

PHP代码:

<?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 ;  
    }

}

下载地址: http://files.cnblogs.com/files/sixiong/openssl.zip

源自:https://www.cnblogs.com/sixiong/p/5885111.html
源自:https://www.cnblogs.com/chrdai/p/8566463.html
谢谢两位博主!

相关文章

网友评论

      本文标题:js加密php解密---jsencrypt

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