OpenSSL存在很多加密解密方式
opnessl_encode与openssl_decode是对称加密
用到公私钥加密的一般用到以下函数
openssl_get_privatekey 或者 openssl_pkey_get_private 校验私钥
//公钥加密则要用对应私钥解密
openssl_public_encrypt
openssl_private_decrypt
//私钥加密则要用对应公钥解密
openssl_private_encrypt
openssl_public_decrypt
示例代码
$data=1;
$private_key_pem="-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJ2+SnvTMbiJ1MxD
gDDLY37jHcqY72WRiI2UJuFupd88foaQeC4m+ow2ljem1ls7orPh6SLVh208DWwK
EahilHdy7uH75gIPUrWo7+gaDvODBNqgXKUSIIeCVlcm7oeG67FBh5bbRO+h8mkX
YMSX8yBJoWMQXs+OEakvSsZAEELVAgMBAAECgYAA8E71Ka6UEI3poUU0BSHUcXmN
6RcTnagYX5dTpBrslymRl25/p8+54eFG94EzDcnMFD4U7PxfVAooaG7ud5e2k94w
GO6xj6oCB4taiCAPf66/x/TNOAAmaiwOYrM4yy2bOOx6bZqNk+O/WR6RdplJ1hGj
Xf9aZER4wKUCuxmfgQJBAMt7oO2K8wU4C6+irglsmyy+IuomilLghdhnc7HLGJvr
x0XdAP4qf26BsitL0upUvOMLQ98dJ6dmD1o1mHVfKUUCQQDGdJb3hL64/fupn+Jy
tPircmSKgXoObv7TomD97fCf6AU0UG0cyZSrWZWIXMRGuawHGHYT5tDY+bNbJVe6
tKRRAkEAlheB89W7Pk1B6XKwtwjiSRWSwW5eN5WfhKmCYFGzvEclPPYwpkoIpyWJ
m4AZenm4vixwCuIBfuu8RUklROZFlQJAKrlc6uqkGLVtIYZvPNyjEF3vMTZQrZzN
tYgms2QvQm2z+SA7bVAkdoMxwwqdotBELb7hZMVzPtL6/utaKLLNEQJAF8Dcm9AS
zgWXbBoM5oNbVQL48guUpoYtDzes+YF38KIEVx76LOyO1jesoNtjGXJymA/H6PN3
qJyXTPmlYEMp0Q==
-----END PRIVATE KEY-----";
$public_key_pem="-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCdvkp70zG4idTMQ4Awy2N+4x3K
mO9lkYiNlCbhbqXfPH6GkHguJvqMNpY3ptZbO6Kz4eki1YdtPA1sChGoYpR3cu7h
++YCD1K1qO/oGg7zgwTaoFylEiCHglZXJu6HhuuxQYeW20TvofJpF2DEl/MgSaFj
EF7PjhGpL0rGQBBC1QIDAQAB
-----END PUBLIC KEY-----";
#校验私钥,如果有证书密码,则填写第二参数
$private_key_pem2=openssl_get_privatekey ($private_key_pem,"123");
//公钥加密
$res=openssl_public_encrypt($data,$signature,$public_key_pem);
var_dump($res);
//私钥加密,$decode是解密后的数据
$res=openssl_private_decrypt($signature,$decode,$private_key_pem);
var_dump($res,$decode);
/***第二种***/
//私钥加密
$res=openssl_private_encrypt($data,$signature,$private_key_pem);
var_dump($res);
//公钥解密,$decode是解密后的数据
$res=openssl_public_decrypt($signature,$decode,$public_key_pem);
var_dump($res,$decode);