实例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