PGP实现邮件加密和签名

一、实验目的及任务:
1、了解加密工具 PGP 的原理
2、熟悉 PGP 简单配置方法
二、实验环境
安装 PGP 加密软件;主机操作系统为 Windows;
三、 实验原理
PGP—Pretty Good Privacy,是一个基于 RSA 公匙加密体系的邮件加密软件。可以用它对你的邮件保密以防止非授权者阅读,它还能对你的邮件加上数字签名从而 使收信人可以确信邮件是你发来的。它让你可以安全地和你从未见过的人们通讯, 事先并不需要任何保密的渠道用来传递密匙。它采用了:审慎的密匙管理,一种 RSA 和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个 良好的人机工程设计。它的功能强大有很快的速度。而且它的源代码是免费的。
四、 实验步骤 使用 PGP 软件对邮件等进行加密和签名。
1、使用 PGP 创建密钥对
A、安装 PGP
B、电脑重启后将“注册码”拷贝到“PGP LICENSE AUTHORIZATION”,在 PASSPHASE 中输入一个 N 位通行码。
C、打开“PGP DISK”按照步骤创建一对密钥对。
D、创建密钥对也可如此做:打开“PGP KEYS”选择“KEYS”“ NEW KEYS”然后按提示做即可。

在这里插入图片描述

2、导出公钥 打开“PGP KEYS”选择“KEYS”“EXPORT”将公钥导出为扩展名为 ASC 的文件,将此文件发给朋友。在这里插入图片描述

1、 使用 PGP 加密、解密邮件 加密过程:
用朋友发来的公钥对邮件加密,在“PGP KEYS”“KEYS” “IMPORT”将公钥导入,用此公钥加密。首先将邮件正文拷贝到剪贴板,然后点击“开 始”-“程序”-“PGP”-“PGPMail”-“EnCRYPT&Sign”,再将剪贴板的内容粘贴到信 件中,即为加密后的密文。 解 密 过 程 : 解 密 时 , 拷 贝 朋 友 发 过 来 的 密 文 到 剪 贴 板 , 然 后 点 击 “DECRYPT&VERIFY”,输入通行码即可。
在这里插入图片描述
在这里插入图片描述

加密后:
在这里插入图片描述

解密:
在这里插入图片描述

2、 使用 PGP 签名和验证签名:过程同上。

在这里插入图片描述
在这里插入图片描述

3、使用 PGP 加密解密文件:
A、右键单击要加密的文件,选择“PGP”-“EnCrypt”,选择加密文件存放 的路径即可。
在这里插入图片描述

B、双击 PGP 加密了的文件,输入私钥通过短语即可。
在这里插入图片描述

打开结果:
在这里插入图片描述

五、实验结果
PGP 实现了邮件的加密和签名
六、实验思考题
PGP 加解密邮件的原理是什么?

答:公私钥本地加解密,首先自己先生成一对密钥。公钥可以放在PGP服务器上用于其他给你给发邮件时用到公钥加密。私钥自己存在本地保管,同理你给别人发邮件就用他的公钥加密文件再发给他。网络中的数据全部是加密的,有DES算法等。

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PGP(Pretty Good Privacy)是一种加密技术,可以用于加密签名电子邮件文件和其他数据。在C语言中,可以使用OpenPGP库来实现PGP加密。 以下是一个简单的示例程序,使用OpenPGP实现PGP加密: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openpgp/openpgp.h> int main(int argc, char *argv[]) { // 读取公钥和私钥文件 pgp_key_t *public_key = pgp_read_keyfile("public.key"); pgp_key_t *private_key = pgp_read_keyfile("private.key"); // 输入明文 char plaintext[1024]; printf("请输入明文:"); fgets(plaintext, sizeof(plaintext), stdin); // 创建加密消息 pgp_message_t *message = pgp_message_new(); pgp_message_set_text(message, plaintext); // 加密消息 pgp_message_t *encrypted_message = pgp_encrypt_message(message, public_key); // 输出加密后的消息 char *encrypted_text = pgp_message_get_text(encrypted_message); printf("加密后的消息:\n%s\n", encrypted_text); // 解密消息 pgp_message_t *decrypted_message = pgp_decrypt_message(encrypted_message, private_key); // 输出解密后的消息 char *decrypted_text = pgp_message_get_text(decrypted_message); printf("解密后的消息:\n%s\n", decrypted_text); // 释放资源 pgp_message_free(message); pgp_message_free(encrypted_message); pgp_message_free(decrypted_message); pgp_key_free(public_key); pgp_key_free(private_key); return 0; } ``` 在上述示例程序中,首先读取公钥和私钥文件,然后输入明文,创建加密消息并加密,输出加密后的消息,解密消息并输出解密后的消息,最后释放资源。 需要注意的是,在实际使用中,公钥和私钥需要严格保密,不应该存储在普通文件中。同时,加密和解密的过程需要保证安全,避免被中间人攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值