RSA----实际函数库选择

非对称数字签名算法 :RSA 秘钥长度 本文介绍RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题,对第一次接触RSA的开发人员来说,RSA算是比较复杂的算法,天缘以后还会补充几篇RSA基础知识专题文章,用最简单最通俗的语言描述RSA,让各位了解RSA算法本身其实也很简单,RSA的复杂度是因为数学家把效率和安全也考虑进去的缘故。 本文先只谈密钥长度、明文长度和密文长度的概念知识,RSA的理论及示例等以后再谈。提到密钥,我们不得... 阅读详情

需求:对字符串加密 

加密后不要超过这个字符串的长度,最好是1半的长度。

非对称算法。

重复度一定要低


1使用RSA加密

1   rsaeuro

2openssl    参考openssl编程

3 Crypto++® Library   http://www.cryptopp.com/



最后选择openssl .原因:业界广泛采用,具有权威性;一直有人维护开发

2 使用MD5


2 openssl rsa具体使用 

参考文档: 1 openssl的man中文文档 http://www.kuqin.com/article/13web_server/478901.html



机密后是二进制乱码,可转换为其它编码,比如使用shell的hexdump -C text

c++ 参考;http://bbs.youkuaiyun.com/topics/390021237 



首先介绍下命令台下openssl工具的简单使用:

生成一个密钥:

openssl genrsa -out test.key 1024

这里-out指定生成文件的。需要注意的是这个文件包含了公钥和密钥两部分,也就是说这个文件即可用来加密也可以用来解密。后面的1024是生成密钥的长度。

openssl可以将这个文件中的公钥提取出来:

openssl rsa -in test.key -pubout -out test_pub.key

-in指定输入文件,-out指定提取生成公钥的文件名。至此,我们手上就有了一个公钥,一个私钥(包含公钥)。现在可以将用公钥来加密文件了。

我在目录中创建一个hello的文本文件,然后利用此前生成的公钥加密文件:

openssl rsautl -encrypt -in hello -inkey test_pub.key -pubin -out hello.en 

-in指定要加密的文件,-inkey指定密钥,-pubin表明是用纯公钥文件加密,-out为加密后的文件。

解密文件:

openssl rsautl -decrypt -in hello.en -inkey test.key -out hello.de

-in指定被加密的文件,-inkey指定私钥文件,-out为解密后的文件。

至此,一次加密解密的过程告终。在实际使用中还可能包括证书,这个以后有机会再说~

-------------------------------------------------------------------------------------------------------------------
下来介绍下在程序如何利用之前生成的test.key和test_pub.key来进行信息的加密与解密(当然也可以直接利用openssl的API来生成密钥文件)。

下面是一个例子,这个例子利用已有的密钥来对source字符串进行加密与解密:

复制代码
 1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 #include<openssl/rsa.h>
5 #include<openssl/pem.h>
6 #include<openssl/err.h>
7 #define OPENSSLKEY "test.key"
8 #define PUBLICKEY "test_pub.key"
9 #define BUFFSIZE 1024
10 char* my_encrypt(char *str,char *path_key);//加密
11 char* my_decrypt(char *str,char *path_key);//解密
12 int main(void){
13 char *source="i like dancing !";
14 char *ptr_en,*ptr_de;
15 printf("source is :%s\n",source);
16 ptr_en=my_encrypt(source,PUBLICKEY);
17 printf("after encrypt:%s\n",ptr_en);
18 ptr_de=my_decrypt(ptr_en,OPENSSLKEY);
19 printf("after decrypt:%s\n",ptr_de);
20 if(ptr_en!=NULL){
21 free(ptr_en);
22 }
23 if(ptr_de!=NULL){
24 free(ptr_de);
25 }
26 return 0;
27 }
28 char *my_encrypt(char *str,char *path_key){
29 char *p_en;
30 RSA *p_rsa;
31 FILE *file;
32 int flen,rsa_len;
33 if((file=fopen(path_key,"r"))==NULL){
34 perror("open key file error");
35 return NULL;
36 }
37 if((p_rsa=PEM_read_RSA_PUBKEY(file,NULL,NULL,NULL))==NULL){
38 //if((p_rsa=PEM_read_RSAPublicKey(file,NULL,NULL,NULL))==NULL){ 换成这句死活通不过,无论是否将公钥分离源文件
39 ERR_print_errors_fp(stdout);
40 return NULL;
41 }
42 flen=strlen(str);
43 rsa_len=RSA_size(p_rsa);
44 p_en=(unsigned char *)malloc(rsa_len+1);
45 memset(p_en,0,rsa_len+1);
46 if(RSA_public_encrypt(rsa_len,(unsigned char *)str,(unsigned char*)p_en,p_rsa,RSA_NO_PADDING)<0){
47 return NULL;
48 }
49 RSA_free(p_rsa);
50 fclose(file);
51 return p_en;
52 }
53 char *my_decrypt(char *str,char *path_key){
54 char *p_de;
55 RSA *p_rsa;
56 FILE *file;
57 int rsa_len;
58 if((file=fopen(path_key,"r"))==NULL){
59 perror("open key file error");
60 return NULL;
61 }
62 if((p_rsa=PEM_read_RSAPrivateKey(file,NULL,NULL,NULL))==NULL){
63 ERR_print_errors_fp(stdout);
64 return NULL;
65 }
66 rsa_len=RSA_size(p_rsa);
67 p_de=(unsigned char *)malloc(rsa_len+1);
68 memset(p_de,0,rsa_len+1);
69 if(RSA_private_decrypt(rsa_len,(unsigned char *)str,(unsigned char*)p_de,p_rsa,RSA_NO_PADDING)<0){
70 return NULL;
71 }
72 RSA_free(p_rsa);
73 fclose(file);
74 return p_de;
75 }
复制代码

一个比较奇怪的问题:

37、38行中为从文件中获取密钥,发现如果使用openssl提供的PEM_read_RSAPublicKey方法会一直失败。

估计是文件格式的问题~

转自:http://www.cnblogs.com/aLittleBitCool/archive/2011/09/22/2185418.html

加密函数库 C/C++ 关键字 Crypto++ OpenSSL Federal Information Processing Standards Crypto++入门学习笔记(DES、AES、RSA、SHA-256) 关键字 Crypto++ OpenSSL 阅读详情

相关推荐

Matlab实现RSA加密算法完整教程

密码学是研究编写和解读密码的一门科学。其目的在于隐藏信息的真正意义以防止未授权者获取信息。随着计算机和网络技术的发展,密码学在信息安全中的作用愈发重要。密码学可以分为两类:对称加密和非对称加密。对称加密使用相同的密钥进行加密和解密,而非对称加密则使用一对密钥,即公钥和私钥。RSA算法作为非对称加密的经典算法之一,其安全性基于数学上难以解决的大整数质因数分解问题。RSA算法的出现标志着现代密码学的一个新纪元,为互联网通信安全提供了有效的解决方案。

weixin_35886636的博客 486

C语言RSA大数运算库,[转载]RSA大数运算库  c++实现

转自http://blog.chinaunix.net/u1/50055/showart_1686985.html基于以下原因,俺估计RSA算法会被越来越多的共享软件采用:1、原理简洁易懂2、加密强度高3、专利限制已过期4、看雪老大三番五次呼吁共享软件采用成熟的非对称加密技术所以,大家应该对RSA算法进行深入了解。RSA依赖大数运算,目前主流RSA算法都建立在512位到1024位的大数运算之上,所...

weixin_33268464的博客 1424

掌握Windows API中的CryptAPI函数库:实现加密与安全功能

CryptAPI(加密应用程序接口)是Windows操作系统中用于提供密码学功能的一套接口。它允许开发者在应用程序中实现加密、解密、数字签名、数字证书和密钥管理等安全机制。作为Windows安全子系统的组成部分,CryptAPI旨在简化安全通信的复杂性,并为开发者提供一致的方法来访问各种密码学算法和服务。消息摘要算法,又称为哈希函数,是一种单向加密技术,其核心特性是不可逆性。这类算法通过将数据输入,通过特定的算法处理后,输出一个固定长度的哈希值。即使是原始数据发生微小变化,产生的哈希值也会截然不同。

weixin_32098457的博客 1279

python模块rsa,非对称加密算法库

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于数据加密和数字签名等安全领域。以下是对RSA算法的介绍以及其优缺点:1.密钥生成:RSA算法生成一对密钥,包括公钥和私钥。公钥用于加密数据,私钥用于解密数据。密钥生成过程涉及选择两个大素数、计算模数、选择指数等步骤。2.加密和解密:使用公钥对数据进行加密,只有拥有相应私钥的接收方才能解密数据。加密和解密过程使用不同的密钥,因此称为非对称加密。3.数字签名:RSA算法还可以用于数字签名。

老衲爱洗头的博客 1624

华为海思IC笔试通关秘籍:物理/电路/工艺三大方向高频考点解析(附真题)

本文深度解析华为海思IC笔试中物理设计、电路设计和工艺制造三大方向的高频考点与备考策略。针对华为海思IC笔试机考的特点,提供了方向选择建议、核心知识梳理及真题实战技巧,帮助考生构建系统性复习框架,高效备战,提升通关成功率。

mars5的博客 1308

MEME-CHIP实战:5步搞定ChIP-seq数据中的motif发现与可视化

本文提供了使用MEME-CHIP工具进行ChIP-seq数据motif发现与可视化的完整实战指南。通过5个清晰步骤,从数据准备、环境搭建、命令行执行到结果解读与高级可视化,详细讲解了如何利用MEME-CHIP工作流高效完成从原始peak序列到发表级motif图的分析,并分享了关键的参数调优与避坑经验。

alice7model的博客 508

openssl rsa

root@m:/data/ssl/tmp/2# openssl genrsa -out rsa_privatekey.key 1024 Generating RSA private key, 1024 bit long modulus ......................................++++++ .....................................

痴迷无限好 405

深度学习分类任务中,正负样本比例失衡的5种实战解决方案(附代码)

本文深入探讨了深度学习分类任务中正负样本比例失衡的5种实战解决方案,包括智能采样技术、动态数据增强、损失函数工程、模型架构创新和训练策略优化。针对信用卡欺诈检测、医疗诊断等场景,提供了详细的代码实现和评估方法,帮助开发者有效解决样本不平衡问题,提升模型在真实场景中的表现。

h9j8k7l6m5n的博客 424

rsa,一个强大的python库

首先,简单科普一下啥是RSA加密算法。1977年,Ron Rivest、Adi Shamir 和 Leonard Adleman这仨哥们搞出来了这套基于大数因子分解的加密算法。核心原理其实就是“你乘俩大素数很简单,但你要分解回去,那可就难了”。用一句话概括:乘法容易,分解困难。

weixin_53707653的博客 2026

Python爬虫分析二手交易平台商品定价合理性:基于多维度数据挖掘与机器学习

本文针对二手交易平台商品定价合理性问题,设计并实现了一个基于Python的多技术融合爬虫系统,结合Scrapy框架、Selenium自动化测试工具、Anti-Scraping对抗技术以及机器学习算法,对国内主流二手交易平台(闲鱼、转转等)进行大规模数据采集与分析。系统实现了商品信息的多维度采集、价格合理性模型构建、可视化展示等功能,为二手商品买卖双方提供科学的定价参考。实验结果表明,该系统能够有效识别定价异常商品,准确率达到89.7%,具有较高的实用价值。关键词:Python爬虫;二手交易;定价分析;

2201_76125261的博客 297

上线之前多一道闸:业务审核系统的接入定义、双轨状态机与可靠生效闭环

运营后台“保存即生效”,让价格、库存、人群等配置每次修改都相当于一次无评审的上线。本文以至尊会员降价活动为例,系统拆解业务审核系统:用带业务语义的操作编码、规则化审核人与候选人快照、完整的生效回调契约做好接入定义;把业务改造为提交待生效,以不可变快照、字段级差异和唯一约束加幂等号防误配防重复;用审批轨与执行轨双轨状态机、链路式重新提交和以事件为准的审核链路理清状态;最后以发件箱、幂等键、超时先查后试、乐观锁与对账闭合生效环节,并结合两个可运行的Java程序,给出五种生效策略的事故率实测对比。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

RSA密钥长度、明文长度和密文长度

RSA密钥长度、明文长度和密文长度 本文整理RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题知识,对第一次接触RSA的开发人员来说,RSA算是比较复杂的算法,以后还会补充几篇RSA基础知识专题文章,用最简单最通俗的语言描述RSA,既方便自己温习,也方便各位新入门的朋友参考,其实RSA算法应用也很简单,RSA的复杂度是因为数学家把效率和安全也考虑进去的缘故。 本文先只谈密钥长度、明文长度和密文长度的概念知识,RSA的理论及示例等以后再谈。提到密钥,我们不得不提到RSA的三个重要大数:公钥指数

qq_24846887的博客 6500

YOLO系列算法改进 | 主干改进篇 | 替换LSKNet主干特征提取网络 | 通过动态调整感受野自适应融合长程上下文,显著提升小目标与复杂背景下的检测精度!

YOLO系列算法改进 | 主干改进篇 | 替换LSKNet主干特征提取网络 | 通过动态调整感受野自适应融合长程上下文,显著提升小目标与复杂背景下的检测精度! (以YOLO26最新目标检测模型为基础,利用LSKNet替代Backbone)

2502_91881744的博客 211

android rsa最大加密明文大小_RSA密钥长度、明文长度和密文长度

本文整理RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题知识,对第一次接触RSA的开发人员来说,RSA算是比较复杂的算法,以后还会补充几篇RSA基础知识专题文章,用最简单最通俗的语言描述RSA,既方便自己温习,也方便各位新入门的朋友参考,其实RSA算法应用也很简单,RSA的复杂度是因为数学家把效率和安全也考虑进去的缘故。本文先只谈密钥长度、明文长度和密文长度的概念知识,RSA的理论及示例...

weixin_39946500的博客 1038

BW 技术 InfoObject 初始化,一次把 0LANGU、0CURRENCY、0IOBJNM 这些底座对象讲透

摘要:BW/4HANA和S/4HANA嵌入式分析中最容易被忽视的关键技术InfoObject(如0LANGU、0UNIT等)是系统运行的基础骨架。这些对象虽不直接涉及业务,但若未正确激活会导致多维分析、查询运行等核心功能异常。BW/4HANA中应通过任务清单SAP_BW4_SETUP_SIMPLE或SAP_BW4_SET_OPERATION_SCOPE激活,而非旧事务码RSTCO_ADMIN。S/4HANA嵌入式分析仍需依赖这些底层BW组件,配置需参考SAP Note 2636754。项目实践中需特别关注这

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1384

【AUTOSAR-IpduM】-2.2-创建并配置一个接收RX的(Multiplexed-I-PDU)多路复用

案列背景: 在CFG中配置一个发送TX的(Multiplexed-I-PDU)多路复用Frame。 目录 1 在Arxml中创建一个发送的多路复用Frame 2 CFG导入带多路复用Frame的ARXML 2.1 CFG中提示的错误Error 2.2 如何解决CFG中提示的错误Error 3 结尾 <--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <--返回「个人博客」首页--&g..

「汽车电子助手」的博客 1569

c语言工程函数库,密码学C语言函数库-----Miracl库

一、简介密码学学习、研究人员往往着重于理论研究,难以与实践直接挂钩,今天介绍一下国外著名密码学C语言函数库——Miracl库的使用方法。该库针对公钥密码学和椭圆曲线密码学的实现,写了很多函数,在这方面可以说是所有国外的库中功能最强大的了。但分组密码等方面的函数相对较少。二、VC6中调用Miracl库的方法下面我详细讲述一下使用方法。1、VC中新建一个project,选择“win32 console...

weixin_34352633的博客 1210

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

RSA 密钥 明文 密文 长度介绍

提到密钥,我们不得不提到RSA的三个重要大数:公钥指数e、私钥指数d和模值n。这三个大数是我们使用RSA时需要直接接触的,理解了本文的基础概念,即使未接触过RSA的开发人员也能应对自如的使用RSA相关函数库,无需深入了解e、d、n是如何生成的,只需要知道我该如何用、要注意什么。 一、密钥长度 1、密钥是指谁? 首先我们说的“密钥”是指谁?由于RSA密钥是(公钥+模值)、(私钥+模值)分...

whatday的专栏 2703

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

android rsa最大加密明文大小_【密码学】RSA密钥长度、明文长度和密文长度

本文介绍RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题,对第一次接触RSA的开发人员来说,RSA算是比较复杂的算法,天缘以后还会补充几篇RSA基础知识专题文章,用最简单最通俗的语言描述RSA,让各位了解RSA算法本身其实也很简单,RSA的复杂度是因为数学家把效率和安全也考虑进去的缘故。本文先只谈密钥长度、明文长度和密文长度的概念知识,RSA的理论及示例等以后再谈。提到密钥,我们不得不提...

weixin_39927158的博客 313

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

密码学C语言函数库——Miracl库快速上手中文指南(VC)

一、简介 密码学学习、研究人员往往着重于理论研究,难以与实践直接挂钩,今天介绍一下国外著名密码学C语言函数库——Miracl库的使用方法。 Miracl库的官方网站是http://www.shamus.ie/,完全开源,任何人可以去免费下载使用。由于国外网速有限,本站提供下载地址:http://www.mathmagic.cn/bbs/read.php?boardID=16&tid=5

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 1万+

终极指南:RsaCtfTool在CTF竞赛中的实战应用与历年RSA攻击案例分析

RsaCtfTool是一款强大的RSA加密破解工具,专为CTF竞赛设计,能够通过多种攻击方法从弱公钥中解密数据并尝试恢复相应的私钥。它集成了多种整数分解算法,为安全研究者和CTF参赛者提供了全面的RSA漏洞分析与利用解决方案。 ## 为什么选择RsaCtfTool?核心功能解析 🚀 RsaCtfTool的核心优势在于其丰富的攻击方法库和易用性。该工具支持两大类攻击方式:不依赖整数分解的攻击和

gitblog_01142的博客 1115

BCB下奇尔卡特(Chilkat)RSA算法组件的使用

一、RSA算法 RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK

Micheal Ku的专栏 2168

非对称加密技术RSA详解(python实现版本)

一、非对称加密算法特点: 1、加密与解密由不同的密钥完成 2、知道加密算法,从加密密钥得到解密密钥在计算上是不可行的 q两个密钥中任何一个都可以用作加密而另一个用作解密 q用户拥有自己的密钥对 q公钥公开,私钥保密

u013005150的专栏 4729
上一篇: RSA实践指南
下一篇: 优快云泄漏数据完整分析
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值