openssl_encrypt() rsa加密
时间: 2024-01-03 15:22:26 浏览: 143
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 函数加密一串长度大于128字节的明文,请列出代码
示例代码:#include <stdio.h>
#include <string.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>int main()
{
char plaintext[128] = "要加密的明文";
unsigned char encrypted[256];
int encrypted_length; //RSA密钥相关
RSA *rsa;
FILE *file;
int rsa_len; //从文件中读取RSA公钥
file = fopen("public.pem", "rb");
if(file == NULL)
{
printf("不能打开文件!");
return -1;
} //从RSA公钥PEM文件创建RSA结构
rsa = PEM_read_RSA_PUBKEY(file, NULL, NULL, NULL); //获取RSA结构中的长度
rsa_len = RSA_size(rsa); //用RSA_public_encrypt函数加密明文
encrypted_length = RSA_public_encrypt(strlen(plaintext), (unsigned char*)plaintext, encrypted, rsa, RSA_PKCS1_PADDING); if(encrypted_length == -1)
{
printf("加密失败!");
return -1;
} //关闭文件
fclose(file); return 0;
}
openssl_public_encrypt
`openssl_public_encrypt` 是一个 OpenSSL 库函数,用于使用公钥对数据进行加密。它采用公钥加密算法(如 RSA),将明文数据加密为密文数据。这个函数需要传入明文数据、明文数据长度、公钥、加密后的数据缓存以及加密后数据缓存的大小等参数。它返回加密后的数据长度,如果加密失败则返回 -1。
阅读全文