依赖于OpenSSL扩展
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/*加密解密*/ function authcode( $string , $operation = 'E' ) { $ssl_public = file_get_contents (DATA_PATH. "/conf/cert_public.key" ); $ssl_private = file_get_contents (DATA_PATH. "/conf/cert_private.pem" ); $pi_key = openssl_pkey_get_private( $ssl_private ); //这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id $pu_key = openssl_pkey_get_public( $ssl_public ); //这个函数可用来判断公钥是否是可用的 if (false == ( $pi_key || $pu_key )) return '证书错误' ; $data = "" ; if ( $operation == 'D' ){ openssl_private_decrypt( base64_decode ( $string ), $data , $pi_key ); //私钥解密 } else { openssl_public_encrypt( $string , $data , $pu_key ); //公钥加密 $data = base64_encode ( $data ); } return $data ; } /*生成证书*/ function exportOpenSSLFile(){ $config = array ( "digest_alg" => "sha512" , "private_key_bits" => 4096, //字节数 512 1024 2048 4096 等 "private_key_type" => OPENSSL_KEYTYPE_RSA, //加密类型 ); $res = openssl_pkey_new( $config ); if ( $res == false) return false; openssl_pkey_export( $res , $private_key ); $public_key = openssl_pkey_get_details( $res ); $public_key = $public_key [ "key" ]; file_put_contents (DATA_PATH. "/conf/cert_public.key" , $public_key ); file_put_contents (DATA_PATH. "/conf/cert_private.pem" , $private_key ); openssl_free_key( $res ); } |
更多关于OpenSS的文章可以查看下面的相关文章