实例3.5.2 数字签名
信息安全技术实验教程(第四版)
实例3.5.2 数字签名
1.RSA密钥签名验签
第1步:在虚拟机KaliLinux1的主文件夹中,新建文件夹test(可以自定义文件夹名称)。

之后在test文件夹里打开终端,执行如下命令创建文本文件。

echo openssl sign test > signtest.txt

第2步:在虚拟机KaliLinux1中,执行如下命令生成RSA密钥对,并且提取出公钥。
openssl genrsa -out rsa_private.key
openssl rsa -in rsa_private.key -pubout -out rsa_public.key

第3步:在虚拟机KaliLinux1中,执行如下命令用RSA私钥对SHA1计算得到的摘要值签名。即文件signtest.txt的签发人对文件进数字签名。
openssl dgst -sign rsa_private.key -sha1 -out sha1_rsa_file.sign signtest.txt

第4步:在虚拟机KaliLinux1中验证收到文件的数字签名,执行如下命令用相同的私钥和摘要算法进行验签。
openssl dgst -prverify rsa_private.key -sha1 -signature sha1_rsa_file.sign signtest.txt

KaliLinux1中**test**文件夹的文件如下:

第5步:在虚拟机KaliLinux-2中验证收到文件的数字签名,请将KaliLinux1中test文件夹复制到KaliLinux2的主文件夹中,在KaliLinux2的test文件夹里打开终端,执行如下命令用相应的公钥和相同的摘要算法进行验签,否则会失败。
openssl dgst -verify rsa_public.key -sha1 -signature sha1_rsa_file.sign signtest.txt

2.DSA密钥签名验签
第1步:在虚拟机KaliLinux1的主文件夹中,在test里打开终端执行如下命令生成DSA参数。
openssl dsaparam -out dsa.param 1024

第2步:在虚拟机KaliLinux1中,执行如下命令由DSA参数生成DSA密钥对,并且提取出公钥。
openssl gendsa -out dsa_private.key dsa.param
openssl dsa -in dsa_private.key -out dsa_public.key -pubout

第3步:在虚拟机KaliLinux1中,执行如下命令用DSA私钥对SHA384计算的摘要值进行签名。即文件signtest.txt的签发人对文件进数字签名。
openssl dgst -sign dsa_private.key -sha384 -out sha384_dsa.sign signtest.txt

第4步:在虚拟机KaliLinux1中验证收到文件的数字签名,执行如下命令用相同的私钥和摘要算法进行验签。
openssl dgst -prverify dsa_private.key -sha384 -signature sha384_dsa.sign signtest.txt

第5步:在虚拟机KaliLinux-2中验证收到文件的数字签名(先将在RSA密钥签名验签时的KaliLinux2的test文件夹删除或放到回收站,再将KaliLinux的test文件夹复制到KaliLinux-2的主文件夹下),执行如下命令用相应的公钥和摘要算法进行验签。
openssl dgst -verify dsa_public.key -sha384 -signature sha384_dsa.sign signtest.txt

