OpenSSL 命令详解(二)——摘要算法、签名、验签
来源:互联网 发布:众测平台数据安全 编辑:程序博客网 时间:2024/06/13 22:54
本文主要介绍OpenSSL 摘要计算命令。
ref:
http://blog.csdn.net/as3luyuan123/article/details/14046375
用什么摘要算法指令代替时,默认使用该算法,但也可以指定其他算法。
使用指令
openssl dgst -
dgst指令 可以用其他摘要算法指令(如md4\md5\sha1…)代替,含义一样
计算摘要值
未指定特定摘要算法时,默认使用md5算法。
用法:
openssl dgst [-算法名称] [-其他选项] inputfile
支持的摘要算法:
-md5:默认选项,用md5算法进行摘要。
-md4:用md4算法进行摘要。
-mdc2:用mdc2算法进行摘要。
-sha1:用sha1算法进行摘要。
-sha:用sha算法进行摘要。
-sha224:用sha算法进行摘要。
-ripemd160:用ripemd160算法进行摘要。
-dss1:用dss1算法进行摘要。
-dss1:用whirlpool算法进行摘要。
其他选项含义
-out file:输出到指定文件
-c:打印出两个哈希结果的时候用冒号来分隔开。仅仅设置了[-hex]的时候有效。
-r:用coreutils格式来输出摘要值。
-rand file:产生随机数种子的文件(没发现产生实际效果)。
-d:打印出BIO调试信息值。
-hex:显示ASCII编码的十六进制摘要结果,默认选项。
-binary:以二进制的形式来显示摘要结果值。
签名验签
签名的一般过程:先对数据进行摘要计算,然后对摘要值用私钥进行签名。
RSA密钥签名验签
1.这里演示以RSA私钥签名为例。因此先生成RSA密钥对。
openssl genrsa -out rsa_private.key
(省略参数设置,使用默认值,模数:1024)
由公钥导出私钥。
openssl rsa -in rsa_private.key -pubout -out rsa_public.key
2.签名
用RSA私钥对SHA1计算得到的摘要值签名。
openssl dgst -sign rsa_private.key -sha1 -out sha1_rsa_file.sign file.txt
3.验签
用相应的公钥和相同的摘要算法进行验签,否则会失败。
openssl dgst -verify rsa_public.key -sha1 -signature sha1_rsa_file.sign file.txt
也可以使用相同的私钥和相同的摘要算法进行验证。
DSA密钥对签名验签
1.生成DSA参数
openssl dsaparam -out dsa.param 1024
2.由DSA参数产生DSA私钥
openssl gendsa -out dsa_private.key dsa.param
3.由DSA私钥生成DSA公钥
openssl dsa -in dsa_private.key -out dsa_public.key -pubout
4.用DSA私钥对SHA384计算的摘要值进行签名。
openssl dgst -sign dsa_private.key -sha384 -out sha384_dsa.sign file.txt
DSA签名对于某些摘要算法不匹配,详见下图。
5.用相应的公钥和摘要算法进行验签
openssl dgst -verify dsa_public.key -sha384 -signature sha384_dsa.sign file.txt
6.用相同的私钥和摘要算法验签
openssl dgst -prverify dsa_private.key -sha384 -signature sha384_dsa.sign file.txt
DSA在每次签名时,使用了随机数k,如果对同一消息进行多次签名,签名结果是不同的,所以DSA是一种随机式数字签名。
HMAC
HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
openssl dgst -md5 -hmac "asfdsdfsg" file.txt
同系列文章:
OpenSSL命令详解(一)——标准命令
OpenSSL 命令详解(二)——摘要算法、签名、验签
- OpenSSL 命令详解(二)——摘要算法、签名、验签
- 小王的尴尬日常(四)--openssl 实现国密算法(签名和验签)
- 签名、验签算法
- openssl+前端jsrsa签名+后端nodejs验签
- openssl rsa 加密,解密,签名,验签简单例子
- openssl的加解密,签名,验签代码
- 签名验签算法:DSA DSASignaureUtil
- OpenSSL: 消息摘要算法
- OpenSSL: 消息摘要算法
- OpenSSL 信息摘要算法
- OpenSSL命令详解(一)——标准命令
- XML签名验签
- ECDSA签名+验签
- 签名、验签
- RN签名、验签
- <Android APK签名验签>二:META-INF文件分析
- iOS中使用Openssl X509证书进行字符串签名和验签
- java/php/c#版rsa签名以及java验签实现openssl生成
- 基于Jquery的表单验证插件与日历插件
- 1.1 产品市场调查的心得体会
- 第六章:Java_异常处理
- Java温习——操作系统和平台相关性
- 10分钟精通SharePoint - SharePoint拓扑结构
- OpenSSL 命令详解(二)——摘要算法、签名、验签
- redis集群的搭建
- 分布式数据库理解
- Promise对象的含义和基本用法
- day20 File类
- 含有中文名称的图片资源无法访问
- 机器学习数学基础学习总结(一)
- 493. Reverse Pairs
- android view宽高确定