作为非对称加密算法,有两对密钥

一般用法



加密结果=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加密方法初识的更多相关文章

  1. PHP使用OPENSSL RSA加密解密数据

    加密数据有很多种方法,今天我们来看一下OPENSSL RSA的加密办法. 1.首先得安装php的openssl扩展 php -m | grep openssl 执行以上命令,确保已经安装了openss ...

  2. openssl rsa加密,解密以及X509证书的使用

    Openssl的相关使用 生成证书 生成证书见:使用 openssl 生成证书 代码实现 Cert.h #ifndef _CERT_H #define _CERT_H ///header files ...

  3. RSA加密方法

    /// <summary>        /// RSA加密        /// </summary>        /// <param name="dat ...

  4. RSA加密方法java工具类

    package com.qianmi.weidian.common.util; import java.io.ByteArrayOutputStream; import java.security.K ...

  5. 利用openssl进行RSA加密解密

    openssl是一个功能强大的工具包,它集成了众多密码算法及实用工具.我们即可以利用它提供的命令台工具生成密钥.证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密. RSA是 ...

  6. OpenSSL中的大数接口与基于其的自用RSA加密接口设计

    本文记录了初次接触OpenSSL中的大数模块,重温了RSA加密流程,使用OpenSSL的接口包装成自用RSA加密接口,并且利用自己的接口演示了Alice与Bob通过RSA加密进行通讯的一个示例. 概览 ...

  7. openssl 非对称加密DSA,RSA区别与使用介绍

    在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多需求! 1. openssl RSA 加解密 RSA是基于数论中大素数的乘积难分解理论上的非对称加密法,使用公私钥 ...

  8. C++调用openssl库生成RSA加密秘钥对

    直接上代码.默认生成的是pkcs#1格式 // ---- rsa非对称加解密 ---- // #define KEY_LENGTH 1024 // 密钥长度 #define PUB_KEY_FILE ...

  9. openssl 非对称加密DSA,RSA区别与使用介绍(转)

    openssl 非对称加密DSA,RSA区别与使用介绍(转) 博客分类: OS.Linux Security   在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多 ...

随机推荐

  1. Bdfproxy

    基于流量劫持动态注入shellcode 本机IP:192.168.1.113 靶机IP:192.168.1.114 先安装bdfproxy,mitmproxy,backdoor_factory 开启流 ...

  2. Jmeter(二十七)模拟发送TCP/UDP/HTTP/FTP等请求包(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter安装UDP插件后支持发送UDP协议的请求包,官方介绍安装插件后可以用来测试DNS, NTP, TFTP, B ...

  3. 最完整Android Studio插件整理 (转)

    转自:http://blog.csdn.net/alpha58/article/details/62881144 现在Android的开发者基本上都使用android Studio进行开发(如果你还在 ...

  4. WPF HyperLink链接下划线隐藏

    两种方法: 1.在Grid标签内添加资源样式. <Grid.Resources> <Style TargetType="Hyperlink"> <Se ...

  5. centos7 搭建keepalived+Nginx+tomcat

    准备1台 192.168.2.224  安装Nginx,2台安装tomcat   192.168.2.222   192.168.2.223 1.安装Nginx: 上传pcre-8.36.tar.gz ...

  6. CentOS 安装Oracle

    转自----------------https://www.cnblogs.com/startnow/p/7580865.html 环境:VM12+centos7 x86_64 minimal - 最 ...

  7. f5 irules

    1.插入XFF when HTTP_REQUEST { if { [HTTP::header exists X-Forward-For] } { set old_xff [HTTP::header v ...

  8. 联机分析处理ROLAP、MOLAP和HOLAP区别(转)

    OLAP(on-Line Analysis Processing)是使分析人员.管理人员或执行人员能够从多角度对信息进行快速.一致.交互地存取,从而获得对数据的更深入了解的一类软件技术.OLAP的目标 ...

  9. 【linux】常见问题&常用命令笔记

    1.重启以及关机命令: Linux centos重启命令: (1)reboot   普通重启 (2)shutdown -r now 立刻重启(root用户使用) (3)shutdown -r 10 过 ...

  10. Windows如何安装Android SDK

    我们都知道App测试分为Android和IOS两种客户端,当我们测试Android版本的App的时候经常要安装Android环境,那么安装Android SDK 就是必不可少的,接下来我们就来看看如何 ...