openssl RSA加密方法初识
作为非对称加密算法,有两对密钥
一般用法
加密结果=RSA_EN(数据,公钥);
解密结果=RSA_DE(数据,私钥);
RSA填充 (RSA_public_encrypt和RSA_private_decrypt自动完成,不用操心,这里只做些说明)
RSA也是对数据分块处理,一般有两种填充方法,当然也可以不填充。
RSA_PKCS1_PADDING:数据块长度(字节)至少比RSA_size(rsa)小11字节。
这里的RSA_size(rsa) = 密钥长度(字节)
例如128Byte(1024bit)的密钥,每个数据块的最大长度就是128-11=117,
然后,加密出来的数据也是128Byte
如果要加密的数据块小于117Byte,比如说64Byte,就要对明文进行填充方式:
[0x02(表示采用公钥加密)][51个伪随机字节][0x00][数据块(64Byte)] 得到总长度117的数据块
如果采用私钥加密
[0x01(表示采用私钥加密)][51个0xff][0x00][数据块(64Byte)] 得到总长度117的数据块
接着填充分组(分组长度128Byte)
[0x00][0x01][8个0xff][0x00][数据块(117Byte)]
RSA_PKCS1_OAEP_PADDING:数据块长度(字节)至少比RSA_size(rsa)小41字节。
解释类似。
-_-!实在瞎编不下去了
int RSA_public_encrypt(int flen, unsigned char *from,
unsigned char *to, RSA *rsa, int padding);
int RSA_private_decrypt(int flen, unsigned char *from,
unsigned char *to, RSA *rsa, int padding);
flen:被加密的数据长度
from:被加密的数据
to :结果
rsa :密钥
padding :填充方式
openssl RSA加密方法初识的更多相关文章
- PHP使用OPENSSL RSA加密解密数据
加密数据有很多种方法,今天我们来看一下OPENSSL RSA的加密办法. 1.首先得安装php的openssl扩展 php -m | grep openssl 执行以上命令,确保已经安装了openss ...
- openssl rsa加密,解密以及X509证书的使用
Openssl的相关使用 生成证书 生成证书见:使用 openssl 生成证书 代码实现 Cert.h #ifndef _CERT_H #define _CERT_H ///header files ...
- RSA加密方法
/// <summary> /// RSA加密 /// </summary> /// <param name="dat ...
- RSA加密方法java工具类
package com.qianmi.weidian.common.util; import java.io.ByteArrayOutputStream; import java.security.K ...
- 利用openssl进行RSA加密解密
openssl是一个功能强大的工具包,它集成了众多密码算法及实用工具.我们即可以利用它提供的命令台工具生成密钥.证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密. RSA是 ...
- OpenSSL中的大数接口与基于其的自用RSA加密接口设计
本文记录了初次接触OpenSSL中的大数模块,重温了RSA加密流程,使用OpenSSL的接口包装成自用RSA加密接口,并且利用自己的接口演示了Alice与Bob通过RSA加密进行通讯的一个示例. 概览 ...
- openssl 非对称加密DSA,RSA区别与使用介绍
在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多需求! 1. openssl RSA 加解密 RSA是基于数论中大素数的乘积难分解理论上的非对称加密法,使用公私钥 ...
- C++调用openssl库生成RSA加密秘钥对
直接上代码.默认生成的是pkcs#1格式 // ---- rsa非对称加解密 ---- // #define KEY_LENGTH 1024 // 密钥长度 #define PUB_KEY_FILE ...
- openssl 非对称加密DSA,RSA区别与使用介绍(转)
openssl 非对称加密DSA,RSA区别与使用介绍(转) 博客分类: OS.Linux Security 在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多 ...
随机推荐
- cdnbest如何配置ssl证书
cdnbest添加ssl证书有三种方式: 一.第一种在站点设置中添加: 点打开,加入证书后点提交 可以点检测功能检查证书是否有效,打勾说明证书是有效的 二. 第二种是在域名记录里添加: 如下图点击,添 ...
- 并发编程(IO多路复用)
阅读目录 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 异步IO(Asynchro ...
- pta7-19打印学生选课清单(模拟)
题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101314114875633664 题意:输入n个学生,k門课程, ...
- centos 7 下多网卡绑定+ vlan 网卡配置
一.前言 CentOS7之前系统提供给用户的是bonding driver来实现链路聚合,实际上bonding适用于大多数应用.Bonding driver的架构是由内核空间完全控制.管理. Team ...
- mysql数据库分区及测试
1. 测试数据库是否支持分区 mysql可以通过下面语句判断是否支持分区: SHOW VARIABLES LIKE '%partition%'; 如果输出:have_partitioning YE ...
- MYSQL启用日志,和查看日志
mysql有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: ...
- oracle数据库导入导出问题
场景描述: 1.做一个从UAT到PRD的Schema迁移,UAT环境有sys用户,PRD环境没有sys用户,由于权限限制,没办法使用expdp/impdp,只好选择exp/imp命令: 2.UAT和P ...
- ionic创建工程中遇到异常、错误及解决方法
1. 创建工程——download failed ionic start myApp tabs 遇到如下错误 Downloading--Failed! Error:Timeout of 25000ms ...
- 退出vim
不保存修改的退出方法: 先按esc,再依次按下:q!,最后按回车. 保存修改的退出方法: 先按esc,再依次按下:wq,最后按回车.
- 官方教程:Apache Kylin和Superset集成,使用开源组件,完美打造OLAP系统
本文转自Apache Kylin公众号apachekylin. Superset 是一个数据探索和可视化平台,设计用来提供直观的,可视化的,交互式的分析体验. Superset 提供了两种分析数据源的 ...