`
lixuanbin
  • 浏览: 135916 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

gpg4win+thunderbird+enigmail实现电子邮件签名与加密

阅读更多

 

一、前言:

1.PGP:

PGP(Pretty Good Privacy)是一个基于RSA加密体系的加密软件。可以用来对邮件进行加密以防止非授权者阅读,对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。

 

2.GPG:

即GnuPG,是PGP标准的一个免费实现。

 

3.非对称加密:

公钥、私钥互补存在,公钥加密的只能用私钥解密,私钥加密的只能用公钥解密。可以创建口令来保护私钥不被盗~~窃滥用。创建了以后后,在解密信息、数字签名、加密文件的时候需要键入私钥保护口令。

 

4.数字签名和邮件加密:

甲给乙发邮件,甲先用消息摘要算法(MD5)生成一个该邮件的128位特征值,然后甲用自己的私匙将上述的128位的特征值加密,附加在邮件后,再用乙的公匙将整个邮件加密。这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个128位的特征值来和用甲的公匙解密签名所得到的数比较,如果两者一致就说明这份邮件确实是甲寄来的且传递过程中未被篡改。

 

更多详情请参考度娘:

http://baike.baidu.com/view/7607.htm



二、gpg4win的安装与使用
1.首先,下载并安装gpg4win
下载地址:
http://gpg4win.org/

安装过程中须手动勾选上gpa选项,其他部分按照默认选项进行安装即可。安装完成后在控制台输入命令“gpg --version”,可以见到gpg的版本号信息:
gpg (GnuPG) 2.0.17 (Gpg4win 2.1.0)
libgcrypt 1.4.6
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
。。。

在程序菜单中可以见到:

 
其中GPA主要用于密钥管理,Kleopatra可用于文件加密/解密。

2.创建自己的密钥对
(1)使用命令行方式创建密钥:
在命令行中输入
gpg --gen-key
然后以问答形式依次输入密钥的算法、大小、失效时间,通常使用默认值即可。接着gpg还会询问你的名字、电子邮件地址和对密钥的备注。最后一步是提供一个私钥保护口令:

 
输入完私钥保护口令后随即点几下鼠标、在键盘敲几个字符以帮助密钥对的生成,然后就大功告成啦:


 
(2)使用gpa界面创建密钥:
运行gpa,点击:Keys --》New Key...:

 
依次指定所用的加密算法、密钥长度、用户名、邮箱、备注和密钥失效日期(可选项),然后点击OK:

 
3.备份私钥
个人的私钥十分重要,万一不慎丢失将不能解密以往所加密过的文件和邮件,因此进行私钥的备份并妥善保管是十分必要的。
(1)在命令行中使用如下命令进行私钥的备份:
gpg -o keyfilename --export-secret-keys KeyID
如果没有KeyID则是备份所有的私钥,-o表示输出到文件keyfilename中,如果加上-a的参数则输出文本格式的信息,否则输出的是二进制格式信息。

(2)通过gpa界面进行私钥备份:
在所需备份的密钥上右击,选择Backup...


 
然后选择备份文件放置的位置并设定文件名,点击Save

 
4.导出自己的公钥
(1)可以使用如下命令导出公钥:
gpg -o -a mypublickey.txt --export KeyID

(2)通过gpa界面导出公钥:
在所需导出的密钥对上右击,选择Export Keys

 
然后选择导出的位置和设定文件名,点击Save

 
5.发布自己的公钥到公钥服务器上
(1)使用gpa界面进行发布
a.选择需要发布到的服务器
菜单 --》 Edit --》 Preferences,选择自定义的Default keyserver,然后点击OK

 
b.发布
在所需发布的密钥上右击,选择Send Keys

 
然后Yes

 
(2)你也可以选择一个其他的公钥服务器(譬如pgp.mit.edu)进行公钥发布。打开网址http://pgp.mit.edu/,把刚刚导出的mypublickey.txt里的文本内容贴到输入框,然后点击Submit:


 
提交成功后可以在同一个页面搜索到刚刚提交的公钥:


点击KeyID可进入查看详情: 


 

6.与朋友交换公钥

在做完了以上几步以后,你就可以与其他同样创建了自己的密钥对的好友们进行公钥交换了。你可以使用如下任一种方式导入其他人的公钥:

(1)朋友直接把他的公钥以文件形式发送给你,这时候你可以:

a.通过命令行导入

gpg --import filename

 

b.通过gpa界面导入



(2)从公钥服务器导入:
a.通过命令行导入
gpg --keyserver hkp://pgp.mit.edu --recv-keys KeyID

b.通过gpa界面导入
点击Server --》 Retrieve Keys...

 
输入要导入的公钥ID,然后点击OK


 
至此,关于gpg4win的使用已经大致讲解完,其他功能可留待诸位看官自行摸索挖掘: ) 
接下来讲讲如何在邮件客户端中使用gpg进行邮件签名和加密

三、使用Thunderbird+Enigmail进行邮件签名和加密
1.下载并安装Thunderbird
http://www.mozilla.org/zh-CN/thunderbird/
安装过程大部分按照默认配置即可

2.设置Thunderbird邮件帐户
请参考:
http://hanning5137.blog.51cto.com/2914528/792787

还有:
http://www.heibai.net/book/html/wangluogongju/youjiangongju/2010/1021/3564.html

3.安装Enigmail插件
打开网址:
http://enigmail.mozdev.org/download/index.php.html
选择对应的版本进行下载

然后打开Thunderbird菜单,工具,附加组件

 
浏览选择刚刚下载好的Enigmail插件的放置位置,确定


 
安装插件完成后需要重启Thunderbird。

4.Enigmail插件配置
右击邮件帐户,选择设置,可以见到多了一个OpenPGP安全的选项

 
选择所需使用的密钥并设定发送邮件的安全选项,点击确定完成设置。

5.向已经导入了自己公钥的联系人发送含有自己数字签名的邮件
(1)选择邮箱帐户,新建邮件,确认数字签名邮件已经勾选


(2)然后点击发送,输入私钥保护口令

(3)发送过程中可以见到邮件已经被签名 

 

6.接收带有数字签名的邮件

输入私钥保护口令以查看收件箱

带有对方数字签名的邮件,Enigmail会自动校验其签名合法性以及是否被篡改

 

7.向已经交换了密钥的联系人发送签名并加密的、带附件的邮件

撰写邮件,添加附件,勾选上安全菜单的数字签名和加密邮件选项:


 

 

然后键入私钥保护口令:

选择邮件加密签名方式:

 

发送过程中,签名并加密邮件,会稍微影响处理速度,稍微忍耐下吧: )

然后,在接收方看到的邮件就是这样的:

 

如此一来,就算客官你用的是雅虎邮箱,也不用怕怕啦~Hope you enjoy it~

 

 

 

参考资料:

http://baike.baidu.com/view/7607.htm

 

http://terrychen.info/encryption-gpg4win

 

http://blog.sina.com.cn/s/blog_44abafb201008zjo.html

 

http://blog.sina.com.cn/s/blog_44abafb201008zgc.html

 

http://www.ithov.com/linux/104420_2.shtml

 

http://blog.sina.com.cn/s/blog_44abafb201008y95.html

 

http://hanning5137.blog.51cto.com/2914528/792787

 

http://www.heibai.net/book/html/wangluogongju/youjiangongju/2010/1021/3564.html

 

分享到:
评论

相关推荐

    大学生创新创业训练计划经验分享.zip

    大学生创新创业训练计划(以下简称为“大创计划”)是一项旨在提升大学生创新能力和创业精神的实践活动。通过这项计划,学生可以在导师的指导下,自主开展研究性学习和创业实践。下面我将分享一些关于大创计划的经验和建议。

    node-v12.22.3-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    毕业设计-The coding solutions of Leetcode and 剑指Offer using .zip

    这里为你收集整理了关于毕业设计、课程设计可参考借鉴的资料一份,质量非常高,如果你投入时间去研究几天相信肯定对你有很大的帮助。到时候你会回来感谢我的。 本资源是经过本地编译测试、可打开、可运行的项目、文件或源码,可以用于毕业设计、课程设计的应用、参考和学习需求,请放心下载。 祝愿你在这个毕业设计项目中取得巨大进步,顺利毕业! 但还需强调一下,这些项目源码仅供学习和研究之用。在使用这些资源时,请务必遵守学术诚信原则和相关法律法规,不得将其用于任何商业目的或侵犯他人权益的行为。对于任何因使用本资源而导致的问题,包括但不限于数据丢失、系统崩溃或安全漏洞,风险自担哦!

    【微信小程序毕业设计】宠物店商城系统开发项目(源码+演示视频+说明).rar

    【微信小程序毕业设计】宠物店商城系统开发项目(源码+演示视频+说明).rar 【项目技术】 微信小程序开发工具+java后端+mysql 【演示视频-编号:282】 https://pan.quark.cn/s/cb634e7c02b5 【实现功能】 本系统实现的是和宠物相关的信息管理和发布,加入了商品销售的功能。操作角色为管理员和用户、商家,管理员的功能为用户管理、商家管理、宠物分类管理、宠物信息管理、商品分类管理、宠物用品管理、项目类型管理、服务项目管理、宠物日志管理、订单管理等;用户的功能为购买宠物、商品、预约服务发表日志管理订单等。商家功能为提供宠物、宠物用品、宠物服务,管理订单和服务预约等。

    雷迪森的工具包(95分以上课程大作业).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、高效的企业级应用。 1. Spring框架:Spring是一个轻量级的Java开发框架,提供了丰富的功能和模块,用于开发企业级应用。它包括IoC(Inverse of Control,控制反转)容器、AOP(Aspect-Oriented Programming,面向切面编程)等特性,可以简化开发过程、提高代码的可维护性和可测试性。 2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、渲染视图和管理流程的功能。 3. MyBatis框架:MyBatis是一个持久层框架,用于与数据库进行交互。它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程

    node-v9.10.1.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于B2C的网上拍卖系统_秒杀与竞价.zip

    基于B2C的网上拍卖系统主要用于帮助人们应用互联网方便快捷买到自己所中意的商品,并参与到秒杀与竞拍当中。 主要功能包括: 1.前台模块 (1)普通用户登录/注册。 (2)分类查看商品(普通商品与促销商品) (3)查看商品详细信息 (4)查看秒杀商品 (5)查看竞拍商品 (6)将商品加入购物车 (7)购买,结算功能 (8)留言 2.后台模块 (1)修改密码 (2)商品管理: -- 编辑/删除 -- 设置/取消促销 (3)秒杀商品:设置/取消秒杀 (4)竞拍商品:设置/取消竞拍 (5)订单管理:查看订单 (5)留言管理:查看/删除留言 项目访问路径: 前台:http://localhost:8080/sale 后台:http://localhost:8080/sale/user/adminlogin

    【前端素材】大数据-政务大数据共享交换平台.zip

    大数据技术指的是用于处理和分析大规模数据集的技术和工具。以下是一些常见的大数据技术和工具: Hadoop:Apache Hadoop是一个用于分布式存储和处理大规模数据的开源框架。它包括Hadoop Distributed File System(HDFS)用于数据存储和MapReduce用于数据处理。 Spark:Apache Spark是一个快速、通用的集群计算系统,提供了比MapReduce更快的数据处理能力。它支持内存计算和更多复杂的数据处理流程。 NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。 机器学习:大数据技术也广泛应用于机器学习领域,支持大规模数据的模型训练和预测分析。 流式处理:针对实时数据处理需求,流式处理技术(如Apache Kafka、Apache Flink)可以实时。

    【前端素材】大数据-气象预报大数据平台.zip

    大数据技术指的是用于处理和分析大规模数据集的技术和工具。以下是一些常见的大数据技术和工具: Hadoop:Apache Hadoop是一个用于分布式存储和处理大规模数据的开源框架。它包括Hadoop Distributed File System(HDFS)用于数据存储和MapReduce用于数据处理。 Spark:Apache Spark是一个快速、通用的集群计算系统,提供了比MapReduce更快的数据处理能力。它支持内存计算和更多复杂的数据处理流程。 NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。 机器学习:大数据技术也广泛应用于机器学习领域,支持大规模数据的模型训练和预测分析。 流式处理:针对实时数据处理需求,流式处理技术(如Apache Kafka、Apache Flink)可以实时。

    数学模型算法多目标决策分析方法.pptx

    数学模型算法

    ############ 光电传感器的描述

    光电传感器

    node-v12.17.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Web开发工具和方法课程的学术项目Java、Spring、Hibernate、Angular

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、高效的企业级应用。 1. Spring框架:Spring是一个轻量级的Java开发框架,提供了丰富的功能和模块,用于开发企业级应用。它包括IoC(Inverse of Control,控制反转)容器、AOP(Aspect-Oriented Programming,面向切面编程)等特性,可以简化开发过程、提高代码的可维护性和可测试性。 2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、渲染视图和管理流程的功能。 3. MyBatis框架:MyBatis是一个持久层框架,用于与数据库进行交互。它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程

    云计算基础课件—云安全dr.pptx

    云计算基础课件—云安全dr.pptx

    jizu3.cod

    jizu3.cod

    线性规划模型及应用中的整数规划讲义.pptx

    数学模型算法

    JAVA毕业设计之医疗挂号管理系统(springboot+mysql)完整源码.zip

    医疗挂号管理系统是一款基于Spring Boot和MySQL的Java毕业设计项目,旨在为医院提供一个高效、便捷的挂号管理解决方案。该系统采用了当下流行的微服务架构,通过Spring Boot框架实现快速开发和部署,同时使用MySQL数据库进行数据存储和管理。 在技术方面,本项目主要使用了以下技术: Spring Boot:一个基于Spring框架的快速开发工具,可以简化项目的搭建、配置和部署过程,提高开发效率。 MySQL:一款开源的关系型数据库管理系统,用于存储和管理医疗挂号管理系统中的数据。 MyBatis:一款优秀的持久层框架,用于实现Java对象与数据库之间的映射关系,简化数据库操作。 Redis:一款高性能的键值对缓存数据库,用于缓存系统中的热点数据,提高系统性能。 Bootstrap:一款前端UI框架,用于构建响应式的用户界面,提高用户体验。 jQuery:一款轻量级的JavaScript库,用于简化前端开发,实现动态效果和Ajax交互。 在功能方面,医疗挂号管理系统主要包括以下模块: 用户注册与登录:用户可以注册并登录系统,创建个人账户。 医生信息管理:管理员可以添加、修改和删除医生信息,包括姓名、职称、科室等。 挂号管理:用户可以选择医生和就诊时间进行挂号,支持在线支付挂号费用。 挂号记录查询:用户可以查看自己的挂号记录,包括挂号时间、医生信息等。 取消挂号:用户可以在规定时间内取消挂号,系统将退还挂号费用。 预约提醒:系统会在预约就诊前通过短信或邮件提醒用户。 统计报表:管理员可以查看系统的挂号统计数据,包括每日挂号人数、各科室挂号人数等。 通过这些功能,医疗挂号管理系统为医院提供了一个便捷、高效的挂号管理解决方案,有助于提高医疗服务质量和患者满意度。

    基于C++ QT的航空订票系统 .zip

    基于QT的系统

    线性规划模型及应用中的单纯形方法讲义.pptx

    数学模型算法

    小程序-43-基于小程序的企业产品推广系统-源码.zip

    提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

Global site tag (gtag.js) - Google Analytics