openssl 非对称加密算法DSA命令详解
1、DSA算法概述
DSA算法是美国的国家标准数字签名算法,它只能用户数字签名,而不能用户数据加密和密钥交换。
DSA与RSA的生成方式不同,RSA是使用openssl提供的指令一次性的生成密钥(包括公钥),而通常情况下,DSA是先生成DSA的密钥参数,然后根据密钥参数生成DSA密钥(包括公钥),密钥参数决定了DSA密钥的长度,而且一个密钥参数可以生成多对DSA密钥对。
DSA生成的密钥参数是p、q和g,如果要使用一个DSA密钥,需要首先共享其密钥参数。关于DSA加密的原理,请自行查阅。
2、DSA算法相关指令及用法
openssl中DSA算法指令主要有三个,分别是
指令 | 功能 |
dsaparam | 生成、处理DSA密钥参数,也可以直接生成DSA密钥 |
dsa | 处理DSA密钥格式的转换 |
gendsa | 根据DSA密钥参数生成一个DSA密钥 |
从上表可以看到,dsa和gendsa和RSA相关指令中的rsa和genrsa用法相似,但是DSA相关指令中没有提供签名和验证操作的dsautl指令,所以如果需要使用DSA进行签名和验证,需要借助dgst指令,该指令在后续章节中介绍。
2.1 dsaparam指令说明
dsaparam主要用户生成密钥参数,也可以生成DSA密钥其用法如下
xlzh@cmos:~/test$ openssl dsaparam - unknown option - dsaparam [options] [bits] <infile >outfile where options are-inform arg input format - DER or PEM // -outform arg output format - DER or PEM // -in arg input file // -out arg output file // -text print as text // -C Output C code // -noout no output // -genkey generate a DSA key // -rand files to use for random number input // -engine e use engine e, possibly a hardware device. // number number of bits to use for generating private key // xlzh@cmos:~/test$
其参数与RSA相关指令的参数类似,不再一一说明,下面以实例的方式说明其用法
1、生成密钥参数并查看其各个参数值
/*生成1024位的密钥参数*/ xlzh@cmos:~/test$ openssl dsaparam -out DSAP.pem 1024 Generating DSA parameters, 1024 bit long prime This could take some time ....
/*明文查看密钥参数的值*/ xlzh@cmos:~/test$ openssl dsaparam -in DSAP.pem -text -noout
2、密钥参数格式间的转换
/*pem格式的密钥参数转为der格式*/ xlzh@cmos:~/test$ openssl dsaparam -in DSAP.pem -out DSAP.der -outform der /*der格式的密钥参数转为pem格式*/ xlzh@cmos:~/test$ openssl dsaparam -in DSAP.der -inform der -out R_DSAP.pem xlzh@cmos:~/test$ diff DSAP.pem R_DSAP.pem
3、直接生成DSA密钥
/*直接生成DSA密钥*/ xlzh@cmos:~/test$ openssl dsaparam -genkey -out DSA.pem 1024 Generating DSA parameters, 1024 bit long prime ... /*查看DSA密钥,可知参数和密钥都被放在输出文件中,说明本质上还是先生成参数,再利用参数生成密钥*/ xlzh@cmos:~/test$ cat DSA.pem -----BEGIN DSA PARAMETERS----- MIIBHgKBgQDAG1CFQRqKgrDa21dT2SO0OtvR0wtKo4GWEH+zikTt6eh6S0CdhtqX PdPiboZdYAJy7HzKHLe0BUkf4dfOOPZBcQrr9sYkJ6q2Zz/jSSA9EnpuQfstdE8a 2wrhIm8mPzBKuWfvz29O6KlBngLfXSfr8Iy2mNAf7NgAntDBMY8yHQIVAMaCaSge oBHtVo9cUoA5E69f2VqrAoGAbzC9wFnra1lT8Egak4N7YHkBwObN3T2ue3tRM7wE uv5rNuIyQrSQnp4vqFcnu3lOrP3ZGEJvEZ0kVo7e6LhfO8V0UOqElfhiuwEaZuzZ 22Sodbu7lUx3YMU1QRvk42IudIevi6LWq4zk+sxraAZ3h5rvo8/pKayxtRuKq8Ep 5kU= -----END DSA PARAMETERS----- -----BEGIN DSA PRIVATE KEY----- MIIBugIBAAKBgQDAG1CFQRqKgrDa21dT2SO0OtvR0wtKo4GWEH+zikTt6eh6S0Cd htqXPdPiboZdYAJy7HzKHLe0BUkf4dfOOPZBcQrr9sYkJ6q2Zz/jSSA9EnpuQfst dE8a2wrhIm8mPzBKuWfvz29O6KlBngLfXSfr8Iy2mNAf7NgAntDBMY8yHQIVAMaC aSgeoBHtVo9cUoA5E69f2VqrAoGAbzC9wFnra1lT8Egak4N7YHkBwObN3T2ue3tR M7wEuv5rNuIyQrSQnp4vqFcnu3lOrP3ZGEJvEZ0kVo7e6LhfO8V0UOqElfhiuwEa ZuzZ22Sodbu7lUx3YMU1QRvk42IudIevi6LWq4zk+sxraAZ3h5rvo8/pKayxtRuK q8Ep5kUCgYAh50mq26xMHfVxb/EkZzH+ouM3zPk6x8f9GFZzuUtGfNCzopTxEmw3 yYPaBwiojhZnK/LXVdEui97+D/rqAPCXAfwFhXLR9w7oikid+Ai1A1B+lycCJrim gyF/dzha7uYGzaA1+rAftE76aeGlZYnoO42CgkxuYsxYxCzTJF8swQIUcrqFkFhN Z2th/K4MZwy4QW6xPrA= -----END DSA PRIVATE KEY-----
2.1 gendsa指令说明
gendsa指令功能简单,即利用输入的密钥参数生成DSA密钥
xlzh@cmos:~/test$ openssl gendsa - usage: gendsa [args] dsaparam-file-out file - output the key to 'file'-des - encrypt the generated key with DES in cbc mode-des3 - encrypt the generated key with DES in ede cbc mode (168 bit key)-seedencrypt PEM output with cbc seed-aes128, -aes192, -aes256encrypt PEM output with cbc aes-camellia128, -camellia192, -camellia256encrypt PEM output with cbc camellia-engine e - use engine e, possibly a hardware device.-rand file:file:...- load the file (or the files in the directory) intothe random number generatordsaparam-file- a DSA parameter file as generated by the dsaparam command
示例如下:
1、根据密钥参数生成密钥
/*根据密钥参数生成密钥*/ xlzh@cmos:~/test$ openssl gendsa -out DSA1.pem DSAP.pem Generating DSA key, 1024 bits xlzh@cmos:~/test$ openssl gendsa -out DSA2.pem DSAP.pem Generating DSA key, 1024 bits /*相同密钥参数,每次生成的密钥不同*/ xlzh@cmos:~/test$ diff DSA1.pem DSA2.pem 8,11c8,11 < TWcw1+XFAoGAEA1DLnv5efzB+ipIQ29q0ZedLVPyxdB44jpZES+esBQtU04HdI2N < bClgwj8c9M6Y/9rL1uy3NqKaGHM+mjLyAXVceigFx7v15r5LRmWjialdqkcVG/3S < Qo530ui/tXgFbFV9iA6C8L+nHDMPOf5v6oGyICmxN8DWzhQAsmy9mkICFBeqMbZM < 9qBeG0BaS/6PucBxObsv --- > TWcw1+XFAoGALWkjJeFunfvkiarJ1/pw8Lqvuyu/Glt3g/hURPPlrOIhA0pFXDmC > UzCM1x6wrHWFc0jmUNk6FtnjGyiCLxVJGzeB7/4MA35aInHkiHwzX7a+B0At8bMq > WEkWtzxhvTxTqWTAcC02Qr2mNNfJwWWVV0jVzMtm3Gb6YwhNnUvxp0ACFHrXO/8h > dIwr6pSuj6vdNpHFDlY2 /*生成密钥并使用des3加密存储*/ xlzh@cmos:~/test$ openssl gendsa -out DSA.pem -des3 -passout pass:123456 DSAP.pem Generating DSA key, 1024 bits
2.1 dsa指令说明
dsa和rsa指令功能及其类似,如下
xlzh@cmos:~/test$ openssl dsa - unknown option - dsa [options] <infile >outfile where options are-inform arg input format - DER or PEM-outform arg output format - DER or PEM-in arg input file-passin arg input file pass phrase source-out arg output file-passout arg output file pass phrase source-engine e use engine e, possibly a hardware device.-des encrypt PEM output with cbc des-des3 encrypt PEM output with ede cbc des using 168 bit key-aes128, -aes192, -aes256encrypt PEM output with cbc aes-camellia128, -camellia192, -camellia256encrypt PEM output with cbc camellia-seed encrypt PEM output with cbc seed-text print the key in text-noout don't print key out-modulus print the DSA public value
示例如下:
1、加密密钥和解密密钥
/*生成未加密的DSA密钥*/ xlzh@cmos:~/test$ openssl dsaparam -out DSA.pem -genkey 1024 /*使用des3加密DSA密钥*/ xlzh@cmos:~/test$ openssl dsa -in DSA.pem -out E_DSA.pem -des3 -passout pass:123456 read DSA key writing DSA key /*解密DSA密钥*/ xlzh@cmos:~/test$ openssl dsa -in E_DSA.pem -out DSA1.pem -passin pass:123456 read DSA key writing DSA key
2、提取DSA的公钥
xlzh@cmos:~/test$ openssl dsa -in DSA.pem -out pub.pem -pubout read DSA key writing DSA key
3、小结
可以看到,DSA和RSA的指令非常相似,熟悉了其中一种,另外一种也很容易上手。而且openssl提供的指令虽多,但参数来来回回就那么多,在多数情况下不同指令的相同参数含义大概一样。
到此为止,介绍了对称加密算法指令,非对称加密算法RSA和DSA相关指令,这些都是一些基础指令,在实际应用中,我们使用openssl做的大多数是与CA有关的签名、验证、加密、解密等。所以接下来要写的是和实际应用相关的内容,比如证书自签名、二级证书签发、终端证书签发、证书验证等内容。
转载于:https://www.cnblogs.com/gordon0918/p/5368706.html
openssl 非对称加密算法DSA命令详解相关推荐
- openssl 对称加密算法enc命令详解
1.对称加密算法概述 openssl的加密算法库提供了丰富的对称加密算法,我们可以通过openssl提供的对称加密算法指令的方式使用,也可以通过调用openssl提供的API的方式使用. openss ...
- Day13_06_openssl 对称加密算法enc命令详解
06_openssl 对称加密算法enc命令详解 一.对称加密算法概述 openssl的加密算法库提供了丰富的对称加密算法,我们可以通过openssl提供的对称加密算法指令的方式使用,也可以通过调用o ...
- python实现非对称加密算法_Python3非对称加密算法RSA实例详解
本文实例讲述了Python3非对称加密算法RSA.分享给大家供大家参考,具体如下: python3 可以使用 Crypto.PublicKey.RSA 和 rsa 生成公钥.私钥. 其中 python ...
- 对称加密和非对称加密算法工作过程详解
非对称加密算法: 加密和解密使用不同的密钥.公钥只能用来加密,而私钥只能用来解密.私钥由用户自己拥有.公钥公开配送,只要有需求即可获得. 优点: 算法安全性高,公钥公开,私钥自己保存 缺点: 加密和解 ...
- 【信息安全】RSA非对称加密算法原理(详解和C++代码实现)
1.RSA非对称加密 (1)选择两个素数p和q ,计算n=p*q和欧拉函数φ(n)=(p-1)(q-1),选择整数e,使gcd(φ(n), e)=1(即φ(n)和e是互素),1<e<φ(n ...
- 【ssl认证、证书】openssl genrsa 命令详解
文章目录 一.openssl genrsa 命令介绍 二.openssl genrsa 命令的语法及选项 三.实例 1.生成512位的 RSA 秘钥,输出到屏幕. 2.生成512位 RSA 私钥,输出 ...
- Linux curl命令使用代理、以及代理种类介绍(附:curl命令详解)
目录 一.代理服务器分类: 二.Linux curl命令代理设置参数: 三.Linux curl命令设置代理举例: 1.linux curl命令设置http代理: 2.Linux curl命令设置so ...
- 【网络编程】Linux tcpdump命令详解---编辑中
目录 即看即用 详细说明 简介 输出信息含义 链路层头 TCP 数据包 UDP 数据包 SMB/CIFS 解码 AFS 请求和回应 KIP AppleTalk协议 IP 数据包破碎 时间戳 反向过滤 ...
- Linux 学习之路 (三):用户管理命令详解
用户管理命令详解 useradd [options] USERNAME -u UID(>=500,并且与其他用户无重复) -g GID(基本组,组必须事先存在) -G GID,- ( ...
最新文章
- WhatFontIs - 字体百科全书,没有不认识的字体
- PLSQL:[1]plsql中文乱码,显示问号
- Html.BeginForm() vs Ajax.BeginForm() in MVC3
- 基于nbu oj c语言答案,Just oj 2018 C语言程序设计竞赛(高级组)F:Star(结构体排序+最小生成树)...
- python3有多少个关键字排序_python3 数据结构和算法-- 通过某个关键字排序一个字典列表...
- python练习代码保存
- win2008服务器维护费用,win2008 服务器安全检查步骤指引(日常维护说明)
- 安装redis3.2.4集群时出现的一些坑
- 新年发财专属红包封面,高端大气上档次!
- 串口中断和定时器中断_51单片机中断机制(定时器/计数器)
- 大气的酒店商务企业网站模板
- 深度剖析JVM常量池,String字符串相关八股文,茴香豆的茴有几种写法?
- python身份证号码共18位_Python实现身份证号码解析
- oracle查找隐藏字符串,oracle chr(0) 隐藏字符串
- linux aufs,Linux文件系统之aufs
- lsdyna如何设置set中的node_list_如何安装使用最帅Linux系统监控工具
- 关于asc、txt格式到pcd、ply格式数据转换
- 详解用Java实现爬虫:HttpClient和Jsoup的介绍及使用(请求方式、请求参数、连接池、解析获取元素)
- arch linux 安装教程(包括安装桌面环境,以及一些常用软件,输入法,网易云 等)
- 前端角度出发做好SEO需要考虑什么?