用openssl的 RSA_public_encrypt 函数加密“我是专门为开发者设计生成的问答式助手,能够帮你解决在学习和工作中遇到的各种计算机以及开发相关的各种问题。 例如代码生成(java的快速排序怎么写?),错误代码提示查询,命令行,通用技术问题,甚至是考试题哦,中英文都可以”,请列出代码
时间: 2023-03-14 18:11:12 浏览: 139
RSA_public_encrypt(const unsigned char *in, size_t inlen, unsigned char *out, RSA *rsa, int padding); unsigned char encrypted[2048/8] = {0}; int encrypted_length = RSA_public_encrypt("我是专门为开发者设计生成的问答式助手,能够帮你解决在学习和工作中遇到的各种计算机以及开发相关的各种问题。 例如代码生成(java的快速排序怎么写?),错误代码提示查询,命令行,通用技术问题,甚至是考试题哦,中英文都可以", strlen("我是专门为开发者设计生成的问答式助手,能够帮你解决在学习和工作中遇到的各种计算机以及开发相关的各种问题。 例如代码生成(java的快速排序怎么写?),错误代码提示查询,命令行,通用技术问题,甚至是考试题哦,中英文都可以"), encrypted, rsa, RSA_PKCS1_PADDING); if (encrypted_length != -1) {
printf("Encrypted text: %s\n", encrypted);
}
相关问题
用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;
}
用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;
}
阅读全文