08.openssl非对称加密算法指令

8.1 非对称加密算法指令概述

a.非对称加密算法也成为公开密钥算法,其解决了对称加密算法密钥需要预分配的难题。

非对称加密算法特点:

a1.加密密钥和解密密钥不相同

a2.密钥对中的一个密钥可以公开(称为公开密钥)

a3.根据公开密钥很难推算出私钥密钥

b.数字签名和密钥交换对公开密钥算法区别

密钥交换算法使用公开密钥进行加密,使用私人密钥进行解密;而数字签名算法则使用私人密钥进行加密,使用公开密钥进行解密。

密钥交换算法要求从加密密钥(公开密钥)很难推算出解密密钥(私人密钥);而数字签名算法则要求从解密密钥,很难推算出加密密钥

8.2 RSA算法指令

RSA算法应用一般包括两个方面:密钥交换和数字签名。

RSA密钥加密的特点是输入数据不能超过RSA密钥的长度,而输出数据长度总是RSA密钥的长度,而输出输出长度总是与RSA密钥长度相同,所以对于量大的数据,一般需要预先进行数据分割。

RSA数字签名,通常是跟信息摘要函数一起使用,这样既可以一次完成加密,比如对于一个大文件,可以先使用SHA1或者MD5算法转换成160位或者128位的摘要信息,使用同样的信息摘要算法对该文件进行运算得到信息摘要值,然后使用RSA算法(通常是公钥)进行解密得到签名方的信息摘要值,对比新计算的信息摘要值和解密得到的信息摘要值。

rsautl指令 :RSA算法加密和解密

genrsa指令:安全生成安全RSA密钥对。

8.1.1 生成RSA密钥


参数

功能

out

输出文件选项

passout

口令输出选项

des,des3,idea,

aes128,aes192,

aes256


加密算法类型选项

f4,3

指数选项

numbits

密钥长度选项

指令参数:

8.1.2 管理RSA密钥

a.密钥格式选项inform和outform


数据格式

openssl定义

指令字符串参数

DER编码

FORMAT_ANS1

d

PEM编码

FORMAT_PEM

p

文件格式

FORMAT_TEXT

t

NET编码

FORMAT_NETSCAPE

n

SGC编码

FORMAT_IISSGC

 

PKCS#12编码

FORMAT_PCKS12

pkcs12、p12或者1

ENGINGE格式

FORMAT_ENGINE

e

b.信息输出项text、noout和modulus

使用text选项将会以明文的形式输出密钥各个参数的值,使用modulus选项专门输出模数值

c.使用RSA密钥

指令参数:

d.操作类型选项sign\verify\encrypt\decrypt

rsautl指令提供RSA算法的操作

sign:执行数字签名操作

verify:数字签名和验证操作

encrypt:表示执行数据加密操作

decrypt:表示执行数据解密操作

e.数据补齐方式选项pkcs\ssl\oaep和raw

8.3 DH算法指令

DH算法(Diffie-Hellman)是最早提出的一种用于密钥交换的公开密钥算法,该算法目前已经广发应用于各种安全协议。

8.3.1 生成DH算法参数

指令:

a.gendh指令格式

DH算法参数包括本原元g和模n,openssl提供的指令gendh和dhparam都可以生成DH参数,并可以经过编码保存在文件中。

b.输出文件选项out

out选项制定了DH算法参数输出和保存的文件名,可以是标准输出设备。

c.本原元g选项2和5

DH算法参数指令的主要目的是产生公共模数n,而本原元g是指定的,目前常用的本原元有2和5。

d.随机数文件选项rand

rand选项指定了产生随机数使用的随机数种子文件,改文件一般来说可以为任何类型的文件。

e.密钥长度选项numbits

DH密钥长度一句DH算法参数的长度而定,所以,生成的DH算法参数的长度决定DH密钥的长度。

8.3.2 管理DH算法参数

a.输入和输出文件选项in和out

b.DH参数检测选项check

DH参数文件存放一段时间之后,你如果对该文件产生怀疑,可以使用check选项对其中DH参数进行检查。check检查四个方面:模数是否正确,模式是否安全,本原元g是否正确及本原元是否合适。

指令:

8.4 DSA算法指令

DSA算法是美国的国家标准数字签名算法,他只有数字签名功能,而没有密钥交换的功能。

8.4.1 生成和管理DSA密钥参数

a.dsaparam指令格式

8.4.2 生成DSA密钥

a.gendsa指令格式

DSA密钥是在DSA密钥参数的基础上产生的,一对DSA密钥可以包含三个部分:

DSA密钥参数(p、q和g)、DSA私钥和DSA公钥。DSA密钥参数是公开的,甚至可以为一组网络用户所共享,即这组网络用户使用相同的DSA密钥参数生成各自的DSA密钥对。

8.4.3 管理DSA密钥

a.dsa指令格式

用户经常会有各种奇怪的需求和想法,尤其是为了加强安全性,对DSA密钥也一样。

输入和输出格式选项inform和outform

输入和输出密钥类型选项pubin和puout.

输入和输出文件选项in和out

输入和输出口令选项passin和passout

8.5 本章小结

RSA密钥算法的密钥生成、管理和使用方法。

DH公开密钥算法,DH算法是一种专门用于密钥交换的算法。

DSA非对称加密算法,专门用于数字签名的非对称加密算法。

原文地址:https://www.cnblogs.com/aixiaoxiaoyu/p/8407139.html

时间: 2024-10-13 11:03:22

08.openssl非对称加密算法指令的相关文章

openssl 非对称加密算法RSA命令详解

1.非对称加密算法概述 非对称加密算法也称公开密钥算法,其解决了对称加密算法密钥分配的问题,非对称加密算法基本特点如下: 1.加密密钥和解密密钥不同 2.密钥对中的一个密钥可以公开 3.根据公开密钥很难推算出私人密钥 根据非对称加密算法的特点,可用户数字签名.密钥交换.数据加密.但是由于非对称加密算法较对称加密算法加密速度慢很多,故最常用的用途是数字签名和密钥交换. 目前常用的非对称加密算法有RSA, DH和DSA三种,但并非都可以用于密钥交换和数字签名.而是RSA可用于数字签名和密钥交换,DH

非对称加密算法

介绍 非对称加密算法需要两个密钥:公开密钥(publickey) 和 私有密钥(privatekey) 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密:如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密 特点 算法强度复杂.安全性依赖于算法与密钥 加密解密速度慢 与对称加密算法的对比 对称加密只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥 非对称密钥体制有两种密钥,其中一个是公开的 RSA 算法原理 找出两个“很大”的质数:P & Q

数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)

数字签名是什么? 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥. 2. 鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把. 3. 苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果. 4. 鲍勃收信后,用私钥解密,看到信件内容. 5. 鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest). 6. 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature). 7. 鲍勃将这个签名,附在信件下面,一起发给苏珊. 8. 苏珊收信后,取下数

PHP 使用非对称加密算法(RSA)

以前一直对客户端传给服务器的信息加密这一块一脸懵,如果app里面的用户登录信息被抓包拿到了,大写着 username:root,password:123456,  那不是很尴尬. 偶然做版权输入的时候遇到了rsa,在支付宝支付的时候也接触过,当时不知道这是啥子,现在才知道. 他能保证,客户端给出的信息,只有拥有私钥的服务器才能看,其他人看的都是乱码,嘿嘿. 非对称加密算法 需要两个密钥:公开密钥(publickey)和私有密钥(privatekey). 公开密钥与私有密钥是一对,如果用公开密钥对

Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

[前言] 本文简单的介绍了加密技术相关概念,最后总结了java中现有的加密技术以及用法和样例 [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao.正确应该是miyue,可是大家都读miyao) 2.简单的样例 将123456每位数字都加1后得到234567, 当中123456就是明文.234567就是密文.加密密钥就是1,加密算法是每位加 3.对称加密和非对称加密 以上为例. 123456-->234567的加密

非对称加密算法RSA--转

RSA     这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman.     这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥.相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了.RSA同时有两把钥匙,公钥与私钥.同时支持数字签名.数字签名的意义在于,对传输过来的数据进行校验.确保数据在传输工程中不被修改. 流程分

第十二章 非对称加密算法-RSA

注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第8章“高等加密算法--非对称加密算法” 12.1.RSA(最经典的非对称加密算法) 特点: 使用一套密钥即可完成加解密(与DH不同) 与DH不同的第二点是,RSA自己可以完成加解密,而DH需要依赖于对称加密算法 “私钥加密,公钥解密”或“公钥加密,私钥解密” 公钥长度远小于私钥长度(对下边的代码进行测试,自己比较结果) 加解密流程: 1)发送方(假设为甲方)构建密钥对,自己保留私钥,将公钥发送给接收方(假设为乙方) 2)甲方使用密

对称加密算法和非对称加密算法速度对比

测试环境: CPU 1 核 Intel 2.2GHZ 内存 1GB 算法 种类 对称加密算法 AES CBC 模式 非对称加密算法 RSA 256 加密明文长度为160 bytes 各运行10000次 上代码 test_aes.py from Crypto.Cipher import AES import time obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456') message = 'a' * 160 t1

信息加密之非对称加密算法RSA

前面为大家已经总结了,基于密钥交换的DH算法,现在就为大家再介绍一种基于因子分解的RSA算法,这种加密算法有两种实现形式:1.公钥加密,私钥解密:2.私钥加密,公钥解密.下面就为大家分析一下实现代码,相对于DH算法,RSA显得有些简单.初始化密钥: KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(512); KeyPair keyPa