zoukankan      html  css  js  c++  java
  • php rsa

    <?php
    
    $res=openssl_pkey_new();
    
    // Get private key
    $ok = openssl_pkey_export($res, $privkey);
    
    // Get public key
    $pubkey=openssl_pkey_get_details($res);
    $pubkey=$pubkey["key"];
    
    //var_dump($privkey, $pubkey);
    var_dump($ok);
    
    $data = '我用iphone手机!';
    
    //可以用base64_decode用于url传输, 或者用 bin2hex($out);
    
    /*
    //公钥加密给私钥解密
    openssl_public_encrypt($data, $encrypted, $pubkey);
    var_dump('公钥加密', $encrypted);
    //私钥解密
    openssl_private_decrypt($encrypted, $decrypted, $privkey);
    var_dump($decrypted);
    
    //私钥加密,给公钥解密
    openssl_private_encrypt($data, $encrypted, $privkey);
    var_dump('私钥加密', $encrypted);
    //给公钥解密
    openssl_public_decrypt($encrypted, $decryptedPub, $pubkey);
    var_dump($decryptedPub);
    */
    
    //效验方式
    
    //$privkey = openssl_pkey_get_private($privkey);   //如果是不信任的字符串,可以通过此函数验证,通过返回密钥
    openssl_sign($data, $signature, $privkey, OPENSSL_ALGO_SHA256);
    //echo bin2hex($signature);
    
    //save for later
    //file_put_contents('private_key.pem', $private_key_pem);
    //file_put_contents('public_key.pem', $public_key_pem);
    //file_put_contents('signature.dat', $signature);
    
    //verify signature
    //hex2bin($signature);
    //$pubkey = openssl_pkey_get_public($pubkey);      //如果是不信任的字符串,可以通过此函数验证,通过返回密钥
    $r = openssl_verify($data, $signature, $pubkey, "sha256WithRSAEncryption");
    var_dump($signature, $r);

    如果公钥、私钥生成失败,则是openssl.cnf路径配置失败。

  • 相关阅读:
    HDU3555:Bomb
    入门OJ:售货员的难题
    Zju1100 Mondriaan
    与图论的邂逅08:树上倍增
    入门OJ:八中生成树2
    Poj2286 The Rotation Game
    P1379 八数码难题
    [SCOI2005]骑士精神
    与图论的邂逅07:K短路
    [Usaco2007 Feb]Cow Party
  • 原文地址:https://www.cnblogs.com/luckcs/p/7199379.html
Copyright © 2011-2022 走看看