社区
Linux/Unix社区
帖子详情
Linux下使用openssl源码中的RSA加密算法
teat328
2011-03-09 03:53:36
openssl中集成了多种加密算法,包括对称加密,非对称加密,哈希等。最近的工作要在openssl的源码包中提取出RSA加密算法的代码,改写后,达到对文件加密解密的功能。
下载了openssl的源码包解压后,apps目录和crypto目录下都有相关RSA的代码。我该用哪一个?怎么才能编译通过?
对Linux下开发还不是太熟悉。。希望大虾们多多指点。。多谢。。
...全文
743
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++
源码
,可以直接运行...
C语言不
使用
openssl
实现
RSA
4096
使用
C语言实现
rsa
4096的加密解密操作,并将加密后的结果进行base64编码,解密之前先
使用
base64解码,再进行解密操作。私钥公钥操作分为两个工程,互不干扰
c++实战区块链核心密码学-基于
openssl
公开课
课程偏工程应用,具体的AES,椭圆曲线、
RSA
等算法只通过图示讲原理,一些简单hash算法会读一些
源码
,并不去实现,课程
中
会单独实现简洁的XOR对称加密和base16算法(代码量不大易懂)。其他的应用我们都基于
OpenSSL
...
Encrypt-Decrypt-with-
OpenSSL
---
RSA
:
使用
openssl
进行数据加密和解密-
RSA
使用
OpenSSL
-
RSA
加密解密 什么是
OpenSSL
?
OpenSSL
是开放源代码库,可
使用
TLS(传输安全层)和SSL(安全套接字层)在网络上提供安全通信。 它支持许多
加密算法
AES,DSA,
RSA
,SHA1,SHA2,MD5。。有关更多信息 什么...
[CryptAPI]纯windowsAPI计算AES/DEA/3DES,
RSA
加密解密,
RSA
签名验签,HMAC,散列等
这次就不用
openssl
了。直接用windows自带的加密库实现各种加密运算。支持的算法:。AES、DES、3DES 的(ECB/CBC/OFB/CFB/CTS 模式)。RC2 RC4。
RSA
密钥对生成。
RSA
公钥加密/私钥解密。
RSA
签名/验签。各种散列:MD2/...
Linux/Unix社区
23,110
社区成员
74,506
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章