多语言展示
当前在线:1118今日阅读:26今日分享:39

linux平台数字签名实现无示例

数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
工具/原料

OpenSSL

方法/步骤
1

数字签名允许数据的接收者用以确认数据的来源和数据的完整性,并且保护数据,防止被人(包括接收者)进行伪造。本节作者系列linux平台算法加密文件示例中的 非对称加密算法加密文件 文中的OpenSSL部分为基础。进行参照操作

2

1.文件的数字签名文件的签发人执行如下命令对文件进行openssl_test.txt数字签名,签名后的文件为openssl_test.sig:[root@localhost misc]# ~/openssl/bin/openssl smime -sign -inkey private_key.pem-signer public_key.pem -in openssl_test.txt -outopenssl_test.sig执行如下命令查看签名后文件openssl_test.sig的内容,如图3-110所示。[root@localhostmisc]# less openssl_test.sig

3

2.验证收到文件的数字签名当接收方收到这份数字签名的文件后,可用所提供的公开密钥(public_key.pem)和CA证书(cacert.pem)来进行验证。接收方执行如下命令进行验证,同时会将原始内容存入openssl_test_t.txt文件:[root@localhostmisc]# ~/openssl/bin/opensslsmime -verify -in openssl_test.sig -signer public_key.pem -out openssl_test2.txt -CAfile ./demoCA/cacert.pemVerificationsuccessful    (此行是上面命令的执行结果,表明数字签名是正确的)[root@localhostmisc]# dirCA.pl      c_info     demoCA               openssl_test2.txt          private_key.pemCA.sh     c_issuer   openssl_test.enc     openssl_test.txt            private_req.pemc_hash     c_name   openssl_test.sig      openssl_test.txt.old      public_key.pem[root@localhostmisc]# cat openssl_test2.txtopenssl_testshi yan!!!    (openssl_test2.txt文件内容)不会降低签名的可信性。完整的数字签名过程(如图3-111所示)如下:(1)发方将原文用哈希算法得数字摘要。

4

(2)用发方的签名私钥对数字摘要加密得数字签名。(3)发方将原文与数字签名一起发送给接收方。(4)接收方验证签名,即发方用验证公钥解密数字签名,得数字摘要。(5)收方将原文采用同样哈希算法得一新数字摘要。(6)将两个数字摘要进行比较,如果二者匹配,说明原文没被修改。因此,数字签名给接收者提供一种保证:被签名的数据仅来自签名者,而且自从数字被签名后就没曾被修改过。这里要特别提醒一点:数字签名可以保证数据没被修改过,但不能保证数据会被未经授权的人阅读。

推荐信息