RSA算法c++代码实现加密单个字母或数字
时间: 2024-05-16 13:12:18 浏览: 83
RSA算法加密的C++实现
RSA算法可以用于加密单个字母或数字。以下是C语言中RSA加密的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>
#include <openssl/rsa.h>
int main()
{
//RSA加密过程
const char* plain_text = "1"; //需要加密的明文
RSA* rsa = RSA_generate_key(1024, 65537, NULL, NULL); //生成RSA密钥对
BIGNUM* bn_plain_text = BN_new();
BN_hex2bn(&bn_plain_text, plain_text);
BIGNUM* bn_cryptogram = BN_new();
RSA_public_encrypt(BN_num_bytes(bn_plain_text), BN_get_data(bn_plain_text), BN_get_data(bn_cryptogram), rsa, RSA_PKCS1_PADDING);
//打印加密结果
printf("加密结果:\n");
char cryptogram_hex[1024] = {0};
char* p = cryptogram_hex;
for (int i = 0; i < BN_num_bytes(bn_cryptogram); ++i)
{
p += sprintf(p, "%02X", BN_get_data(bn_cryptogram)[i]);
}
printf("%s\n", cryptogram_hex);
//RSA解密过程
BIGNUM* bn_result = BN_new();
RSA_private_decrypt(BN_num_bytes(bn_cryptogram), BN_get_data(bn_cryptogram), BN_get_data(bn_result), rsa, RSA_PKCS1_PADDING);
//打印解密结果
printf("解密结果:%s\n", BN_bn2hex(bn_result));
BN_free(bn_plain_text);
BN_free(bn_cryptogram);
BN_free(bn_result);
RSA_free(rsa);
return 0;
}
```
当然,这只是一个简单的例子,实际使用中需要考虑更多的因素,比如安全性、性能等等。
阅读全文