openssl RSA非对称加密解密
2018-11-07 11:44
841 查看
需要先了解的openssl系列函数
- openssl_pkey_get_private 从证书中解析获取私钥,以供使用。成功,返回真实的密钥资源标识符(Resource ID),否则返回false
- openssl_pkey_get_public 从证书中解析获取公钥,以供使用。成功,返回真实的密钥资源标识符(Resource ID),否则返回false
- openssl_private_encrypt($data, $encrypted, $privateKeyResourceID, OPENSSL_PKCS1_PADDING)
- //使用私钥key加密数据data并且将结果保存至变量crypted中
- openssl_public_decrypt(base64_decode($encrypted), $decrypted, $publicKeyResourceID, OPENSSL_PKCS1_PADDING)
- //私钥加密的内容通过公钥可用解密出来
<?php /** * Created by PhpStorm. * User: zrj * Date: 18-11-7 * Time: 上午10:22 */ declare(strict_types=1);//开启强类型模式 //私匙 $privateKeyString = <<<EOF -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAxHS1H/9uMS+waaP8vkEHx0EJWqPnRjYIzHKrXeMQ3fjZmxPG MJmzwKVdADQlaFbA/NePu7dVFyzFo2yrAFlJD9bWs6of79OM2QGxu/AL2GqwjaOZ /+5tSkxqU8fj+/sb35U9kGxy/k4KPwlatTaHIkXb7qebCGX1hgNw2BkRrNfXWRX+ EVs8Oy/I/d1CMQMF3mvsCFvoUAE/UJVOOAjjQ6rBX+PorWXuTIKgWgSFWwzsRWJN hQo6P6Y/amx2Jb6Nr0rHIJIREICdYMAp2DSC+uU+jl85NqT3U89BRRG+58feoUOL DGiv0hRQ7+k1e47MfiwKpCpJOkldEJjywMhl1QIDAQABAoIBAHBQuOyeQAVm2ljL JEgxLZ1BFXP4mNSPN+CK/mYi1xXQm7gJShmnBhlxcQYYyfoo/xSOuOH9ImypcCTK j8kXQqoHjaAR90hJjhDS4yYrStpjxKR1kCm9ykXcAj373d/F5F2jGRtkpSm2vCzl 0DIiBogVoHOE5yGaCRChDva8/lnt3ACEurhiL37ZJbOnbZMj2FkNmtv7eCgVEUTH Ydu9cU8mbC3g1WMDxKSBxwgRhZQYZQSRta4nkWN5xEcO7WAF3RWs1cFJ4ttCQaRy J/Y0K8R9prLRwh51/jonQPCJN+NGmtpCq9+kgVxxLe7p45k4DO2VxaKzto5IDSZj hdFTEAECgYEA43cRn8ISAlHQHxi2EOq5Ygk98Bf249WNuBzxOra5SpCBVbRGvTeY Mrq86FY1PsFK+pOVeiiaaGanZDFtULEJyiZm3KaE2PVRsbfeYO9vSTHW8ikdmpCW VALpL6B+Q7kRvA/1krnU9Uy8c9k+EpZOELI9Ja8H9pMErMVd7LX+HtUCgYEA3RnK 5gzXNNI4hfphepxXD/+qFxgd0mmwi/jLhc4c62V259sUR2R38jo+xDgBlDvrlmDi e6H7q56Y3M1Zag+zHc8PgtqxY7CPt5rc8dHd8iYh0UxNCYjlM3QP8dULdPmlnPkC 70KyHNkCoesiDytbT50EN5KnqEO99Kgl3mhqqwECgYAHGQcOwiKHuf/RiJbdzkU8 nuc037qPf3FtplGMsHj1r66peveeHeb85kDQyyfcLnHlgcdvSWcQDOv6P2SW2P9i NHKPPg71KiqDbiZdRftmAE0hv1CyKwLV2kVmfA6UlGjOQn06N9xCT0OuJcA/GjuT X8xyqZSJCCtkLMByi3dDhQKBgFmRWk2phADk7Hrx/E1ESkyz4H6siWA06o05g5E3 9yUxHGM+r89gFussx0KMAa/AOmbX5sf4zdAvVnOUSJWbuI7p07nJyDS/UOkrNjhM MWIoKmj0RP0I1PjsGo14JcUEYR/fDF5KoYboLpXTgB+vC7WLwSqWIY8bqjcTawvX NucBAoGAPGAi11FCqx5R3r/3pJkySlNoj+m/J04mdYXJpmJV6P6PczJHd0aRjvJF 6ubuKot1pExuhEivYo7dYubr5clmh2S8bs9kyS5Q2Btz5kXhxf4EGmJRVD+CAmvi EAHNljZQgkfonOZFqRXaxqAsqEziIfQqI7IjpTkcGgts4v43Tlo= -----END RSA PRIVATE KEY----- EOF; //公匙 $publicKeyString = <<<EOF 5b4 -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxHS1H/9uMS+waaP8vkEH x0EJWqPnRjYIzHKrXeMQ3fjZmxPGMJmzwKVdADQlaFbA/NePu7dVFyzFo2yrAFlJ D9bWs6of79OM2QGxu/AL2GqwjaOZ/+5tSkxqU8fj+/sb35U9kGxy/k4KPwlatTaH IkXb7qebCGX1hgNw2BkRrNfXWRX+EVs8Oy/I/d1CMQMF3mvsCFvoUAE/UJVOOAjj Q6rBX+PorWXuTIKgWgSFWwzsRWJNhQo6P6Y/amx2Jb6Nr0rHIJIREICdYMAp2DSC +uU+jl85NqT3U89BRRG+58feoUOLDGiv0hRQ7+k1e47MfiwKpCpJOkldEJjywMhl 1QIDAQAB -----END PUBLIC KEY----- EOF; $data = "helloworld"; try { //从证书中解析获取私钥。成功,返回真实的密钥资源标识符 $privateKeyResourceID = openssl_pkey_get_private($privateKeyString); if ($privateKeyResourceID === false) throw new \Exception('private key string is wrong'); //从证书中解析获取公钥,以供使用。成功,返回真实的密钥资源标识符 $publicKeyResourceID = openssl_pkey_get_public($publicKeyString);//这个函数可用来判断公钥是否是可用的 if ($publicKeyResourceID === false) throw new \Exception('public key string is wrong'); //使用私钥key加密数据data并且将结果保存至变量crypted中。 //加密后的数据可以通过openssl_public_decrypt()函数来解密。 openssl_private_encrypt($data, $encrypted, $privateKeyResourceID, OPENSSL_PKCS1_PADDING); //私钥加密 $encrypted = base64_encode($encrypted);//加密之后的结果,base64只是为了避免特殊字符 openssl_public_decrypt 5ae0 (base64_decode($encrypted), $decrypted, $publicKeyResourceID, OPENSSL_PKCS1_PADDING);//私钥加密的内容通过公钥可用解密出来 echo $decrypted . PHP_EOL; } catch (\Exception $e) { die($e->getMessage()); }
相关文章推荐
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
- openssl 非对称加密 RSA 加密解密以及签名验证签名
- RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密
- OpenSSL生成证书进行iOS加密,java解密的RSA非对称加密 详解
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
- android RSA加密 解密 非对称可逆加密
- 非对称加解密——RSA加密、解密以及数字签名
- 漫谈iOS RSA非对称加密与解密
- php使用openssl来实现RSA(非对称加密)
- openssl 非对称加密DSA,RSA区别与使用介绍(转)
- openssl RSA 非对称加解密
- 安装openssl及实现RSA加密解密的详细步骤
- 关于openssl rsa php c++ js 协同加密解密的一些资源链接
- php rsa加密解密实例(非对称加密)
- RSA非对称加密解密例子
- 对文件压缩加密,解密解压缩,非对称加密,RSA,AES算法
- 利用openssl进行RSA加密解密
- 【加密与解密】Openssl 生成的RSA秘钥如被C#使用解密