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路径配置失败。

 

posted @ 2017-07-18 11:07  luckc#  阅读(247)  评论(0编辑  收藏  举报