openssl_public_encrypt
时间: 2023-06-29 17:19:45 浏览: 169
openssl_public_encrypt是一个OpenSSL库中的函数,用于使用公钥加密数据。它的语法如下:
```
int openssl_public_encrypt ( string $data , string &$crypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] )
```
其中,$data表示要加密的数据,$crypted是加密后的数据,$key是公钥,$padding是填充模式,缺省值为OPENSSL_PKCS1_PADDING。这个函数会返回加密后的数据长度,如果加密失败则返回false。
相关问题
openssl_encrypt() rsa加密
openssl_encrypt()函数是一个用于加密数据的函数,它可以使用不同的加密算法进行加密。然而,openssl_encrypt()函数本身并不支持RSA加密算法。RSA是一种非对称加密算法,它需要使用公钥进行加密,私钥进行解密。
如果你想使用RSA算法进行加密,你可以使用openssl_public_encrypt()函数。这个函数可以使用公钥对数据进行加密。下面是一个使用openssl_public_encrypt()函数进行RSA加密的例子:
```php
// 加载公钥
$publicKey = openssl_pkey_get_public(file_get_contents('public.pem'));
// 要加密的数据
$data = 'Hello, World!';
// 加密数据
openssl_public_encrypt($data, $encrypted, $publicKey);
// 输出加密后的数据
echo base64_encode($encrypted);
```
请注意,上述代码中的`public.pem`是包含公钥的文件路径。你需要将其替换为你自己的公钥文件路径。
用openssl的 RSA_public_encrypt 函数分段加密,请列出代码
以下是使用OpenSSL的RSA_public_encrypt函数进行分段加密的一个示例代码:#include <openssl/rsa.h>
#include <openssl/bio.h>
#include <openssl/pem.h>
#include <assert.h>// 加密函数,用公钥加密
int public_encrypt(unsigned char* data, int data_len, unsigned char* key, unsigned char* encrypted)
{
// 公钥
RSA * rsa = createRSA(key, 1);
// 加密后的长度
int length = RSA_size(rsa);
// 分段加密
int offset = 0;
int inputLen = data_len;
while (inputLen > 0)
{
// 计算本次加密长度
int encryptLen = inputLen > length - 11 ? length - 11 : inputLen;
int ret = RSA_public_encrypt(encryptLen, data + offset, encrypted + offset, rsa, RSA_PKCS1_PADDING);
// 加密出错
if (ret < 0)
{
return ret;
}
offset += ret;
inputLen -= encryptLen;
}
return offset;
}// 生成RSA公钥
RSA * createRSA(unsigned char* key, int isPublic)
{
// 将公钥文本转换为BIO类型
BIO* bio = BIO_new_mem_buf(key, -1);
// 从BIO类型中读取公钥
RSA* rsa = NULL;
if(isPublic)
{
rsa = PEM_read_bio_RSA_PUBKEY(bio, &rsa, NULL, NULL);
}
else
{
rsa = PEM_read_bio_RSAPrivateKey(bio, &rsa, NULL, NULL);
}
// 释放BIO类型
BIO_free_all(bio);
return rsa;
}
阅读全文