准备工作

命令行加密解密,用与比对代码中的算法和命令行的算法是否一致

C:\openssl_test>openssl rsautl -encrypt -in data.txt -inkey public.pem -pubin -out data.en

C:\openssl_test>openssl rsautl -decrypt -in data.en -inkey private.pem -out data.de

-pubin表示使用纯公钥加密

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/bn.h>
#include <openssl/rsa.h>
#include <openssl/pem.h> #include <openssl/applink.c>
#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib") int main()
{
RSA *rsaKey; char fData[]="j23ur2jfsf-=20r034ujf";
char tData[128]; FILE *fp;
fp = fopen("C:\\openssl_test\\public.pem", "r"); int strLen = strlen(fData); rsaKey = PEM_read_RSA_PUBKEY(fp, NULL, NULL, NULL);
int ret = RSA_public_encrypt(strLen, (unsigned char *)fData, (unsigned char*)tData, rsaKey, RSA_PKCS1_PADDING);
//每次加密出来的tData都不一样,因为填充了随机数
RSA_free(rsaKey);
fclose(fp); //此段代码用户比对,校验命令行的加密
//将结果写入文件,生成的文件用命令行解密
//openssl rsautl -decrypt -in pdata.en -inkey private.pem -out pdata.de
fp = fopen("C:\\openssl_test\\pdata.en", "wb");
fwrite(tData , ret, 1 , fp );
fclose(fp); fp = fopen("C:\\openssl_test\\private.pem", "r");
rsaKey = PEM_read_RSAPrivateKey(fp,NULL,NULL,NULL);
ret = RSA_private_decrypt(128, (unsigned char *)tData, (unsigned char *)fData, rsaKey, RSA_PKCS1_PADDING); fclose(fp); //此段代码用于比对,校验命令行的解密
//将命令行生成的加密文件读入内存,然后解密
//openssl rsautl -encrypt -in data.txt -inkey public.pem -pubin -out data.en
fp = fopen("C:\\openssl_test\\data.en", "rb");
fread(tData , 128, 1 , fp ); ret = RSA_private_decrypt(128, (unsigned char *)tData, (unsigned char *)fData, rsaKey, RSA_PKCS1_PADDING);
fclose(fp); RSA_free(rsaKey);
return 0;
}

openssl pem密钥文件rsa加密解密例子的更多相关文章

  1. java 使用pem密钥进行RSA加解密

    1.使用openssl生成私钥和公钥 openssl下载地址:http://www.openssl.org/source openssl生成私钥命令:  genrsa -out rsa_private ...

  2. C#的RSA加密解密签名,就为了支持PEM PKCS#8格式密钥对的导入导出

    差点造了一整个轮子 .Net Framework 4.5 里面的RSA功能,并未提供简单对PEM密钥格式的支持(.Net Core有咩?),差点(还远着)造了一整个轮子,就为了支持PEM PKCS#8 ...

  3. .NET使用OpenSSL生成的pem密钥文件

    NET要使用OpenSSL生成的pem密钥文件,网上资料很少(http://www.faqs.org/rfcs/rfc1421.html,RFC1421文件又老长老长),仅有的资料还是有错误的,所以今 ...

  4. openssl evp RSA 加密解密

    openssl evp RSA 加密解密 可以直接使用RSA.h 提供的接口 如下测试使用EVP提供的RSA接口 1. EVP提供的RSA 加密解密 主要接口: int EVP_PKEY_encryp ...

  5. OpenSSL 中 RSA 加密解密实现源代码分析

    1.RSA 公钥和私钥的组成.以及加密和解密的公式: 2.模指数运算: 先做指数运算,再做模运算.如 5^3 mod 7 = 125 mod 7 = 6 3.RSA加密算法流程: 选择一对不同的.而且 ...

  6. iOS使用Security.framework进行RSA 加密解密签名和验证签名

    iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...

  7. python rsa 加密解密 (编解码,base64编解码)

    最近有需求,需要研究一下RSA加密解密安全:在网上百度了一下例子文章,很少有文章介绍怎么保存.传输.打印加密后的文本信息,都是千篇一律的.直接在一个脚本,加密后的文本信息赋于变量,然后立马调用解密.仔 ...

  8. python下RSA加密解密以及跨平台问题

    Reference:  http://www.cnblogs.com/luchanghong/archive/2012/07/18/2596886.html 项目合作需要,和其他网站通信,消息内容采用 ...

  9. 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输

    Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都 ...

随机推荐

  1. 解题5(StringMerge1)

    题目描述 按照指定规则对输入的字符串进行处理. 详细描述: 将输入的两个字符串合并. 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序.这里的下标意思是字符在字符串 ...

  2. Jmeter学习(三十二)调试工具Debug Sampler(转载)

    转载自 http://www.cnblogs.com/yangxia-test 一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug S ...

  3. python3 获得shell的输出内容(subprocess.getstatusoutput)

    默认通过os.system(“shell")命令赋值,结果是0之类的,0表示shell命令运行正确 如果想获得shell输出的内容,可以通过[subprocess.getstatusoutp ...

  4. linux 查看端口占用

    参考 https://www.cnblogs.com/wangtao1993/p/6144183.html lsof -i:8000

  5. 基于.net开发chrome核心浏览器【一】(转)

    http://www.cnblogs.com/liulun/archive/2013/03/18/2874276.html 说明: 这是本系列的第一篇文章,我会尽快发后续的文章. 源起 1.加快葬送I ...

  6. Android 实现简单 倒计时60秒,一次1秒

    倒计时功能如上图所示,其实就几行代码即可实现效果啦!!! /** 倒计时60秒,一次1秒 */ CountDownTimer timer = new CountDownTimer(60*1000, 1 ...

  7. 贪吃蛇Controller Java实现(二)

    package cn.tcc.snake.Controller; import java.awt.Point;import java.awt.event.KeyAdapter;import java. ...

  8. python之语音识别(speech模块)

    1.原理 语音操控分为 语音识别和语音朗读两部分. 这两部分本来是需要自然语言处理技能相关知识以及一系列极其复杂的算法才能搞定,可是这篇文章将会跳过此处,如果你只是对算法和自然语言学感兴趣的话,就只有 ...

  9. JS中取得<asp:TextBox中的值

    var s = document.getElementById("<%=txt_DaShen.ClientID %>").value; 注:txt_DaShen 为as ...

  10. jQuery Grid高级指南

    上周以为已经把jqgrid 表格这部分已经搞得差不多了,没想到在实际用的时候,出现了不少问题,重新把这块知识整理一下. 问题一:设置表格的自动刷新 问题的原因: 使用表格自带的增删改查的功能,编辑完数 ...