对称加密

2021/4/27 18:59:51

本文主要是介绍对称加密,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

<?php
/**
 * client
 * rsa aes md5签名
 * @author v_fanyinggang(v_fanyinggang@baidu.com)
 */
$serect = '范英刚';
$appkey = '1248995523';
//url
$url = "127.0.0.1?";
//参数
$params = array();
$params['appkey'] = $appkey;
$params['name']   = 'shiyi';
$params['password'] = 'fyg666666';
$params['time'] = time();
//http请求参
$queryString = http_build_query($params);
//获取签名
$sign = getSign($params, $serect);
//拼接签名
$queryString .= "&sign=".$sign;

//公钥加密
$public = '-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqqbyZuhT9dm84krq2lWt
76P82FQjBuGCNJtY7tgmdzW3iM2ixvH+fid0K4jx/0SbaBgH5dZiWYeaHthHuw1Z
CNNSrF/sT2Sc7gfUnroWZIJ8tbTEfNC+GUz/OCVoug2cP6pfWH/dttWfxBflcJ6o
uMv8ZygdfFeWKbwd5fucOAh8hg1EZlk3JVC5YcusHJalpFMYspBByGvW3hbXcqUK
jURNTgUjE3OpQ6N97EKJBC1cygJ0/8ifjQsCGYbxx1L4E//JkB4KVXGcyU6UNt9g
AYNd8L53svAG/DIzlxbbkW3veKc/jbOfY2HdcLOZN4BW9pQ9jlvlUshV2unA4UVK
DMG5bHJpU1z0/hv0QDAQwdihV88iLoYjEsW4jGJEVEtJuPRNsIK9GR2gbp4tAGGI
2ZbrW/W6f/fXRQffHY8MA5+s0mrsq+a11IXVCFytYCsi10kNRhdUny9MamUkNCAB
mfhR1jadJbpqOMyjAob0sezCa1E24KvCp+FXBG3TwTy2xoZ+SRpzrwWrPsAkZVSu
H5wCS3/4kEdvcgpEdfdok5aGIqKdgeCr9BsorqQXsB0SWY3Z1dnz9UlVqzFBZWs7
eXq02ukI730PN0MDb3wNBwBQ9kD0/1rVCYURLaJMTLpBGXei9jYNdLut0k84zBc/
80KedIhDjUQN9rtiIqLnwqsCAwEAAQ==
-----END PUBLIC KEY-----';
$encrypt = "";
openssl_public_encrypt($queryString, $encrypt, $public);
$encrypt = urlencode($encrypt);
//拼接url
$url .= "query=".$encrypt;
var_dump($url);
/**
 * 签名生成
 * @param $params
 * @param $serect
 * @return string
 */
function getSign($params, $serect)
{
    //字典序
    ksort($params);
    //参数拼接
    $query = http_build_query($params).$serect;
    return md5($query);
}


<?php
/**
 * serivce
 * @author v_fanyinggang(v_fanyinggang@baidu.com)
 */
$private = '-----BEGIN PRIVATE KEY-----
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
UghFfeR6cgvGR+M6+xYoyWkMi8YC
-----END PRIVATE KEY-----';

//接收到请求参数
$query = $argv[1];
$query = urldecode($query);
//解密后的数据
$decrypt = '';
openssl_private_decrypt($query, $decrypt, $private);
//参数分割为数组
$params = [];
parse_str($decrypt, $params);
//验证签名
$sign = getSign($params);
if ($sign != $params['sign']) {
    throw new Exception('签名错误', 2001);
}
if (time() - $params['time'] > 600) {
    throw new Exception('请求超时', 4001);
}

echo "success";

/**
 * 获取签名
 *
 * @param $params
 * @return string
 */
function getSign($params)
{
    $token = [
        '1248995523'    => '范英刚',
    ];
    //  移除sign
    unset($params['sign']);
    //字典序
    ksort($params);
    //参数
    $query = http_build_query($params).$token[$params['appkey']];
    return md5($query);
}




这篇关于对称加密的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程