5.openssl dgst

该伪命令用于生成文件的信息摘要,也可以进行数字签名,验证数字签名。

首先要明白,要进行数字签名,需要计算出特征码即数字摘要,然后使用私钥对数字摘要进行签名。特征码使用md5,sha等计算出。

对象只能是文件,不能是一段数据。

[[email protected] tmp]# man dgst

NAME

dgst, md5, md4, md2, sha1, sha, mdc2, ripemd160 - message digests

SYNOPSIS

openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-c] [-d] [-hex] [-binary] [-out filename] [-sign filename] [-keyform arg] [-passin arg] [-verify filename] [-prverify filename] [-signature filename] [-hmac key] [file...]

[md5|md4|md2|sha1|sha|mdc2|ripemd160] [-c] [-d] [file...]

DESCRIPTION

The digest functions output the message digest of a supplied file or files in hexadecimal form.They can also be used for digital signing and verification.

可以看出openssl dgst -md5和openssl md5的作用是一样的。

-sign filename:使用filename中的私钥对file数字签名。签名时绝对不能加-hex等格式的选项,否则验证签名必失败,亲测。

-verify filename:使用filename中的公钥验证数字签名

-prverify filename:使用filename中的私钥验证数字签名

-signature filename:指定filename为待验证的签名文件

-out filename:输出到filename而不是stdout

-hex:以16进制显示结果。如果不以-hex显示,再签名或验证签名文件时很可能乱码

例如,对/tmp/a.txt文件生成MD5摘要信息。

[[email protected] tmp]# openssl dgst -md5 a.txt

MD5(a.txt)= 0bbee18df3acef3f0f8496eb7e1d03ad

例如,使用前文生成的私钥文件/tmp/genrsa.txt对/tmp/a.txt文件签名。要指定单向加密算法,如md5,sha1,不指定时默认为sha1。使用-hex选项,否则默认输出格式为二进制会乱码。

[[email protected] tmp]# openssl dgst -md5 -hex -sign genrsa.txt a.txt

RSA-MD5(a.txt)= 253a5f9009d697d19cbce426bf46bbcf3623359923cb24fd4a16a9852581bba7ff10cc5aefeebdf112a9cb22394d07aeab18f8af89e24a82a688a4acfe88db3dbef821d9a30360a0e88bb9006608ab46dda4333ed260e231bbd0f7a7c7ba478f796c1787a3fa5645bc0497336374d18af320aaacfc35f34e12dd7e72e5b729ea

但是记得,如果要验证签名,那么这个生成的签名要保存到一个文件中,且一定一定不能使用-hex等格式化选项,否则验证签名必失败。

RSA签名和验证签名的过程

重点在于签名时不能使用“-hex”等格式化选项。

先生成RSA私钥文件rsa.file。

[[email protected] tmp]# openssl genrsa -out rsa.file 2048

Generating RSA private key, 2048 bit long modulus

...............................................................................................................................+++

.......................................................................+++

e is 65537 (0x10001)

提取公钥到rsa.file.pub文件。

[[email protected] tmp]# openssl rsa -in rsa.file -pubout -out rsa.file.pub

writing RSA key

使用MD5算法计算摘要信息并同时使用私钥加密摘要信息得到数字签名,签名保存在xxx.sign文件中。记得不要加-hex等格式化输出的选项。

[[email protected] tmp]# openssl dgst -md5 -sign rsa.file -out xxx.sign xxx.txt

分别使用公钥和私钥文件进行数字签名的验证。记得指定md5算法对xxx.txt计算信息摘要,以便和验证签名得到的摘要对比。

[[email protected] tmp]# openssl dgst -md5 -verify rsa.file.pub -signature xxx.sign xxx.txt

Verified OK
[[email protected] tmp]# openssl dgst -md5 -prverify rsa.file -signature xxx.sign xxx.txt

Verified OK
时间: 2024-12-24 11:25:14

5.openssl dgst的相关文章

Openssl dgst命令

一.简介 消息摘要可以对任意长度的消息产生固定长度(16或20个字节)的信息摘要,理论基于单向HASH函数,根据消息摘要无法恢复出原文,所以是安全的:消息原文和消息摘要是一一对应的,所以又被称作指纹. 二.语法 openssl dgst[-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-c] [-d] [-hex] [-binary] [-out filename] [-sign filename] [-keyform arg] [-pass

openssl 摘要和签名验证指令dgst使用详解

1.信息摘要和数字签名概述 信息摘要:对数据进行处理,得到一段固定长度的结果,其特点输入: 1.输出长度固定.即输出长度和输入长度无关. 2.不可逆.即由输出数据理论上不能推导出输入数据 4.对输入数据敏感.当输入数据变化极小时,输出数据也会发生明显的变化 5.防碰撞.即不同的数据数据得到相同输出数据的可能性极低. 由于信息摘要有上述特点,一般保证数据的完整性,对一个大文件进行摘要运算,得到其摘要值.通过网络或者其他渠道传输后,通过验证其摘要值,确定大文件本身有没有发生变化. 数字签名:数字签名

安全与加密(openssl)

一.安全及威胁 NIST(National Institute of Standard and Technology,美国国家标准与技术研究院)制定了安全的数据应该具备的安全属性: 1)保密性 即认为安全的数据是具有隐私性的 2)完整性:数据不可被篡改,包括: 数据完整性: 系统完整性. 3)可用性 加密过的数据可以被还原且继续被使用 威胁我们数据安全的主要有以下攻击方式:STRIDE 1)Spoofing(假冒),arp欺骗等 2)Tampering(篡改) 3)Repudiation(否认)

加密、解密的原理及Openssl创建CA和ssh的基础应用

加密.解密的原理及Openssl创建CA和ssh的基础应用 随着互联网的不断发展和技术的不断成熟,在互联网上传输文件不在安全,在需要传送重要的数据时就必须加密处理. 密码算法分为三种:分别是对称加密,公钥加密,单向加密:以及需要对加密算法的认证,叫做认证协议.下面为大家概述对称加密,公钥加密,单向加密及认证协议 对称加密: 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 需要对加密和解密使用相同密钥的加密算法.由于其速度快,对称性

openssl与数据传输安全

数据安全服务的几个方面:     1.认证             访问控制 阻止对资源的未授权访问     2.数据保密性      3.数据完整性          要保证发送方所发送的数据没有被修改...     4.不可否认性 一.怎么验证数据的完整性.也就怎么知道数据在传输的过程中没有被修改过.这就要使用到单向加密算法,提取数据的指纹(特征码). 数据的传输双方为:甲.乙 甲:在数据传输之前,提取该数据的"指纹"然后,把数据指纹附加在数据中一起发送给乙. 乙:接收到该数据以后

openssl

https的实现过程 client 从互联网下载CA的证书(公匙 ),用于验证server的身份 server 通过加密算法生成一对密匙,将公匙发给CA认证机构,做数字前面 CA通过自己的私匙加密server公匙并加上自己的数字签名后,将生成的数字证书发给server client 与 server 通过TCP 的三次握手建立连接 client发出HTTP 的报文请求,并和server协商使用哪种算法加密 server 响应 报文并将证书(公匙)发给客户端 client通过CA的证书(公匙)解密

Linux命令:openssl

openssl命令简介: SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输.Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准.其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持.已经成为Internet上保密通讯的工业标准. SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证.SSL协议要求建立在可靠的传输层协议(TCP)之上.SSL

openssl大纲

1.加密和SSL机制:http://www.cnblogs.com/f-ck-need-u/p/6089523.html 2.openssl命令总指挥:http://www.cnblogs.com/f-ck-need-u/p/6089703.html 3.openssl genrsa:http://www.cnblogs.com/f-ck-need-u/p/6089730.html 4.openssl rsa:http://www.cnblogs.com/f-ck-need-u/p/608979

openssl+http实现https

openssl详解及实现https openssl详解及实现https OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. 秘钥算法和协议: 对称加密: 加密和解密使用同一个密钥,原始数据分成固定大小块,算法不同 秘钥过多,秘钥分发困难 DES,3DES  AES  Blowfish  Twofish  IDEA  RC6 CAST5 公钥加密:    分公钥与私钥        公钥:从私钥中提取产