php pkcs8 rsa 加密
时间: 2023-07-07 07:45:50 浏览: 166
以下是使用PHP进行PKCS#8 RSA加密的步骤:
1. 生成RSA密钥对
```php
$config = array(
"digest_alg" => "sha256",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
);
// 生成密钥对
$res = openssl_pkey_new($config);
// 获取私钥
openssl_pkey_export($res, $private_key);
// 获取公钥
$public_key = openssl_pkey_get_details($res);
$public_key = $public_key["key"];
```
2. 加载私钥并进行加密
```php
// 加载私钥
$private_key = openssl_pkey_get_private($private_key);
// 待加密的数据
$data = "hello world";
// 加密
openssl_private_encrypt($data, $encrypted, $private_key, OPENSSL_PKCS1_PADDING);
// 将加密后的数据转为Base64编码
$encrypted = base64_encode($encrypted);
```
3. 加载公钥并进行解密
```php
// 加载公钥
$public_key = openssl_pkey_get_public($public_key);
// 将加密后的数据从Base64解码
$encrypted = base64_decode($encrypted);
// 解密
openssl_public_decrypt($encrypted, $decrypted, $public_key, OPENSSL_PKCS1_PADDING);
echo $decrypted; // 输出:hello world
```
需要注意的是,上述代码中使用的是PKCS#1 v1.5填充模式。如果需要使用PKCS#1 OAEP填充模式,则需要将OPENSSL_PKCS1_PADDING替换为OPENSSL_PKCS1_OAEP_PADDING。同时,在使用PKCS#8格式的密钥时,需要先将其转换为PKCS#1格式,然后再使用openssl_pkey_get_private函数加载私钥。
阅读全文