zoukankan      html  css  js  c++  java
  • php中rsa加密及解密和签名及验签

    //公私钥分割
    function getPublicKey($certificate)
    {
    $publicKeyString = "-----BEGIN PUBLIC KEY----- " .
    wordwrap($certificate, 64, " ", true) .
    " -----END PUBLIC KEY-----";
    return $publicKeyString;
    }

    function getPrivateKey($certificate)
    {
    $privateKeyString = "-----BEGIN RSA PRIVATE KEY----- " .
    wordwrap($certificate, 64, " ", true) .
    " -----END RSA PRIVATE KEY-----";
    return $privateKeyString;
    }

    //时间转换位毫秒13位
    function getMillisecond() {
    list($t1, $t2) = explode(' ', microtime());
    return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);
    }

    /**
    * RSA验签
    * @param $data 待签名数据
    * @param $ali_public_key_path 支付宝的公钥文件路径
    * @param $sign 要校对的的签名结果
    * return 验证结果
    */
    function rsaVerify($data, $aliapp_rsa_public, $sign) {
    //$pubKey = file_get_contents($ali_public_key_path);

    $pubkey = getPublicKeyFromX509($aliapp_rsa_public);
    $res = openssl_get_publickey($pubkey);

    $result = (bool)openssl_verify($data, base64_decode($sign), $res);
    openssl_free_key($res);
    return $result;
    }
    $private_key='MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANd8wU2Y0dWCPT6Nzyg8ety0w8epyNDfthrMo/2yt8o6l1leG2i2qQR1QY8bB4z83HdVE0hYEzE2nhscGGeqbm2CtXaY8dM+CjNTAVxO76c2nlgu6wUoGZBDFDuS9AXnpoQvC7NveSMl5GVg12zIRDS+F4m3CBMtJjooIrULhdDRAgMBAAECgYBeGFZqdWxPULdAnPjUB5DY1kBVa/DKMJ3a1vhXHFbAAlS7i+npEDX+wdr2S+XArVvx6d7pLLh4uXJRwTNw9Q2RjC43wvUaDBSBVBHRbcjquvhOnPVsnC/KEvw7qYJta09rfnD9ycPrCpyQ/oN7ci1gCRCeZLkcv+fuHk4Pe0zJrwJBAOsWvVN3ZCegHin1SQQUECBljuPaYQiV8yq270xOcVm39x3Ll8OncOGfTJfAxMSF44hVEhKVim7ZwEDXAUtnyBMCQQDqp6pThQHvvgB9rOvZtywwLVSr/pRR2zKL46sJ60DoHRZyIZIAPbvaAkktBjJiI4RBBU8ezg+hCUEjIrKSJegLAkEAtl9gplSTfO4JGHGxoBlUXV2L2RU7e2agSr25rE+aPYiqixG6/UxzFIT47SzdOLvJRKUCLSqXRuFj9KkW1wF+wwJBAN4en+g3O0IJBMXx7b9E2JsyDbhRX2yspQguFjVpbyNIhXq7tExuI2eWSlZIS2ECZap2sBJk0/6HmBT+PzKAl0kCQFWBKKAi3S4Hcxm4NEOHmQ2o7ZtCNbhc88hrTd2p0fejB0rbHT857SOfwxsMiVqM291Fvbobs6ZO7UTneXkhhIM=';
    $privateKeyString = "-----BEGIN RSA PRIVATE KEY----- " .
    wordwrap($private_key, 64, " ", true) .
    " -----END RSA PRIVATE KEY-----";
    $pi_key = openssl_pkey_get_private($privateKeyString);
    // echo $arr," ";
    //$arr = md5($arr);
    $encrypted = "";
    openssl_sign($arr,$encrypted,$pi_key,OPENSSL_ALGO_MD5);//md5 with rsa加密
    $encrypted=base64_encode($encrypted);
    openssl_free_key($pi_key);
  • 相关阅读:
    dba_segments和dba_tables的不同
    查询用户表空间
    远程登录Oracle数据库
    SQL Server 收缩数据库
    Xshell乱码解决方法设置
    Spring常用注解
    Hibernate的fetch
    在 Eclipse 中使用 JSHint 检查 JavaScript 代码
    enterprise architect (EA) 源码生成UML类图,帮助理解项目工程
    上传excel数据到数据库中
  • 原文地址:https://www.cnblogs.com/hdd-zero/p/8073728.html
Copyright © 2011-2022 走看看