社区
Linux/Unix社区
帖子详情
Linux下使用openssl源码中的RSA加密算法
teat328
2011-03-09 03:53:36
openssl中集成了多种加密算法,包括对称加密,非对称加密,哈希等。最近的工作要在openssl的源码包中提取出RSA加密算法的代码,改写后,达到对文件加密解密的功能。
下载了openssl的源码包解压后,apps目录和crypto目录下都有相关RSA的代码。我该用哪一个?怎么才能编译通过?
对Linux下开发还不是太熟悉。。希望大虾们多多指点。。多谢。。
...全文
987
4
打赏
收藏
Linux下使用openssl源码中的RSA加密算法
openssl中集成了多种加密算法,包括对称加密,非对称加密,哈希等。最近的工作要在openssl的源码包中提取出RSA加密算法的代码,改写后,达到对文件加密解密的功能。 下载了openssl的源码包解压后,apps目录和crypto目录下都有相关RSA的代码。我该用哪一个?怎么才能编译通过? 对Linux下开发还不是太熟悉。。希望大虾们多多指点。。多谢。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Tom_殇子
2012-04-18
打赏
举报
回复
编译的时候要加参数:-lcrypto 你试试看。你最好把报错的图给我看看。
平凡的思想者
2011-03-10
打赏
举报
回复
加密:
/*
gcc -o rsa-encrypt rsa-encrypt.c -lcrypto
*/
#include <openssl/rsa.h>
#include <openssl/err.h>
#define MODULUS "C8FBCF21"
#define PUBLIC_EXPONENT RSA_F4
#define PRIVATE_EXPONENT "97B55D7D"
int main()
{
int ret, flen;
BIGNUM *bnn, *bne, *bnd;
unsigned char *in = "abc";
unsigned char *out;
bnn = BN_new();
bne = BN_new();
bnd = BN_new();
BN_hex2bn(&bnn, MODULUS);
BN_set_word(bne, PUBLIC_EXPONENT);
BN_hex2bn(&bnd, PRIVATE_EXPONENT);
RSA *r = RSA_new();
r->n = bnn;
r->e = bne;
r->d = bnd;
RSA_print_fp(stdout, r, 5);
flen = RSA_size(r);// - 11;
out = (char *)malloc(flen);
bzero(out, flen);
//memset(out, 0, flen);
printf("Begin encrypt...\n");
ret = RSA_public_encrypt(flen, in, out, r, RSA_NO_PADDING);
if (ret < 0)
{
printf("Encrypt failed!\n");
return 1;
}
printf("Size:%d\n", ret);
printf("ClearText:%s\n", in);
printf("CipherText(Hex):\n");
int i;
for (i=0; i<ret; i++)
{
printf("0x%02x, ", *out);
out++;
}
printf("\n");
//free(out);
RSA_free(r);
return 0;
}
解密:
/*
gcc -o rsa-decrypt rsa-decrypt.c -lcrypto
*/
#include <openssl/rsa.h>
#define MODULUS "C8FBCF21"
#define PUBLIC_EXPONENT RSA_F4
#define PRIVATE_EXPONENT "97B55D7D"
int main()
{
int ret, flen;
BIGNUM *bnn, *bne, *bnd;
unsigned char in[] = {0x51, 0xc2, 0x8d, 0xc6};
unsigned char *out;
bnn = BN_new();
bne = BN_new();
bnd = BN_new();
BN_hex2bn(&bnn, MODULUS);
BN_set_word(bne, PUBLIC_EXPONENT);
BN_hex2bn(&bnd, PRIVATE_EXPONENT);
RSA *r = RSA_new();
r->n = bnn;
r->e = bne;
r->d = bnd;
RSA_print_fp(stdout, r, 5);
flen = RSA_size(r);
out = (unsigned char *)malloc(flen);
bzero(out, flen);
printf("Begin decrypt...\n");
ret = RSA_private_decrypt(sizeof(in), in, out, r, RSA_NO_PADDING);
if (ret < 0)
{
printf("Decrypt failed!\n");
return 1;
}
printf("Size:%d\n", ret);
printf("ClearText:%s\n", out);
free(out);
RSA_free(r);
return 0;
}
大牛~Daniel
2011-03-09
打赏
举报
回复
移植啊!这个要有点耐心,淡定!
「已注销」
2011-03-09
打赏
举报
回复
用crypto这个吧。。。
c++通过
openssl
实现
rsa
加密解密【windows版】
c++通过
使用
openssl
实现
rsa
加密解密算法,网上有很多文章和例子,但是大部分都是
linux
版的,并且内容不全、代码老旧等各种问题,导致最后无法调试,这里提供的
源码
是用code::blocks编写的c++
源码
,可以直接运行【windows版】
Delphi
RSA
加密与解密
OpenSSL
本程序在Delphi 7 环境编译通过,
使用
OpenSSL
支持大于128字节文本
RSA
加密与解密。
Nginx禁用
RSA
加密算法
[
源码
]
本文详细介绍了在Nginx
中
禁用
RSA
加密算法
(包括
RSA
密钥交换和签名算法)的具体步骤。核心原理是通过配置ssl_ciphers指令过滤掉所有依赖
RSA
的加密套件,仅保留
使用
ECDSA或其他非
RSA
算法的套件。文章提供了具体的配置示例,包括如何设置ssl_ciphers、ssl_protocols等参数,并强调了
使用
ECDSA证书的重要性。此外,还介绍了如何验证配置是否生效以及注意事项,如证书兼容性、客户端兼容性和安全权衡等。通过以上配置,可以彻底禁用Nginx
中
的
RSA
加密算法
,仅
使用
更安全的非
RSA
加密套件。
OpenSSL
RSA
AES加密解密C++
源码
OpenSSL
RSA
AES加密解密C++
源码
C语言不
使用
openssl
实现
RSA
4096
使用
C语言实现
rsa
4096的加密解密操作,并将加密后的结果进行base64编码,解密之前先
使用
base64解码,再进行解密操作。私钥公钥操作分为两个工程,互不干扰
Linux/Unix社区
23,224
社区成员
74,537
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章