Python给指定文件打上数字签名

Python给指定文件打上数字签名

数字签名概念:

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术数字摘要技术的应用。(来源于百度百科)

数字签名作用:

个人感觉 主要是为了保证文件安全性,完整性。就是如果有人修改了文件的部分,实质上,数字签名也会随之改变,就能进行判别。

实战添加数字签名:

  • 环境配置(Win10环境下):

    1. makecert.exesigntool.exe:这两个文件是主要作用是在一个是创建证书,一个是打签名时候使用,只要安装VisualStudio就自带了。
    2. python3:这个是用来写代码的。。
  • 代码:

    #打标签工具
    
    import subprocess
    
    def signtool(filename):
        signtool_exe = r'C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\signtool.exe' # signtool exe
        pfx_file = r'E:\certs\server.pfx' # pfx位置
        cmd = '%s sign /f %s /p 12421242 /v %s' % (signtool_exe, pfx_file, filename)
        proc = subprocess.Popen(cmd)
        proc.wait()
    
    signtool(r'F:\565\code\sign\1.exe')
    
  • 运行结果:

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 可以看出,已经打上数字签名了。

好的,我可以为您提供一些关于使用python_gnupg进行文件数字签名和验证的指导。首先,您需要安装python_gnupg模块,可以使用以下命令进行安装: ``` pip install python-gnupg ``` 接下来,您需要生成一个GPG密钥对,可以使用GnuPG工具生成。生成密钥对后,您可以将公钥共享给其他人,以便他们可以验证您签名的文件。 接下来,您可以使用以下代码对文件进行数字签名: ```python import gnupg gpg = gnupg.GPG() key_data = open('secret-key.asc').read() import_result = gpg.import_keys(key_data) f = open('file_to_sign.txt', 'rb') signed_data = gpg.sign_file(f, keyid=import_result.fingerprints[0], detach=True) f.close() with open('file_to_sign.txt.asc', 'wb') as f: f.write(signed_data.data) ``` 以上代码将使用指定的密钥对对文件进行数字签名,并将签名结果保存在与原始文件相同的目录下,并以.asc为后缀名。 最后,您可以使用以下代码对签名后的文件进行验证: ```python import gnupg gpg = gnupg.GPG() key_data = open('public-key.asc').read() import_result = gpg.import_keys(key_data) f = open('file_to_sign.txt.asc', 'rb') verify_result = gpg.verify_file(f, data_filename='file_to_sign.txt') f.close() if verify_result.valid: print('Signature is valid') else: print('Signature is invalid') ``` 以上代码将使用指定的公钥对签名后的文件进行验证,并输出验证结果。 希望这些代码可以帮助您进行文件数字签名和验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Music 爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值