OpenGPG尝试
from my csdn blog
信息安全原理 hw3
gpg - OpenPGP encryption and signing tool
一个加密和签名的工具
首先生成一对密钥
amrzs@ubuntu:~$ gpg --gen-key
gpg (GnuPG) 1.4.14; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
请选择您要使用的密钥种类:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (仅用于签名)
(4) RSA (仅用于签名)
您的选择? 1
RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 60
密钥于 2014年05月17日 星期六 10时45分02秒 CST 过期
以上正确吗?(y/n) n
密钥的有效期限是?(0) 45
密钥于 2014年05月02日 星期五 10时45分02秒 CST 过期
以上正确吗?(y/n) y
您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
成用户标识,如下所示:
“Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”
真实姓名: amrzs
电子邮件地址: myemail@gmail.com
注释: rsa for information security course
您选定了这个用户标识:
“amrzs (rsa for information security course) <myemail@gmail.com>”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o
您需要一个密码来保护您的私钥。
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要267字节)
fdgjhhujhtgertrefdgdeter]gfdgreiil[po4[]op[=owerewrewrewfjhfuhuewewewwwweee
ewrewweryyruwyruywuqgtght
reretet
.+++++
...+++++
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要92字节)
...+++++
..+++++
gpg: 密钥 340E02B6 被标记为绝对信任
公钥和私钥已经生成并经签名。
gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
gpg: 下次信任度数据库检查将于 2014-05-02 进行
pub 2048R/340E02B6 2014-03-18 [有效至:2014-05-02]
密钥指纹 = 891E B35E 31D1 F008 0138 0A87 7FC0 656F 340E 02B6
uid amrzs (rsa for information security course) <myemail@gmail.com>
sub 2048R/13F9301C 2014-03-18 [有效至:2014-05-02]
下面查看一下生成的密钥
amrzs@ubuntu:~$ gpg --list-keys
/home/amrzs/.gnupg/pubring.gpg
------------------------------
pub 2048R/340E02B6 2014-03-18 [有效至:2014-05-02]
uid amrzs (rsa for information security course) <myemail@gmail.com>
sub 2048R/13F9301C 2014-03-18 [有效至:2014-05-02]
导出公钥到文件中 -a为ascii模式
amrzs@ubuntu:~$ gpg --export -a > public_key.rsa
amrzs@ubuntu:~$ cat public_key.rsa
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.14 (GNU/Linux)
mQENBFMns6EBCADYEMqh+uZ9xXct36e8ypyC6+W+qhge5roJ9E6vYwA7/mE4jKvj
Fi3izHdFCA3t56ggoaa8lSKrr7MapGyVvRVrZVCnqpPIwmUCHTrs2rbV6Zo1X688
B6ww2LJrp9EjsvKgR2G71ZlbjzfpnktgAKZd2DUEeIT17fEhF7Zem2FFuBpmtf4a
fNa02uJCCFuKCeGWyf0gBf29tEIDezXrXm0fBQrJa2ugtMQpV5YGg/KUtxW81Z/1
Exu87HPFQazwSdAU0n8uNJd1VZ9pTuPuHNPCvhcfJj7i5bgDrgjIoHVQOIoKJnoH
x0rc5vTwiJKQAvR7Rarap2uW7m8LE1CpQanDABEBAAG0QmFtcnpzIChyc2EgZm9y
IGluZm9ybWF0aW9uIHNlY3VyaXR5IGNvdXJzZSkgPGFtcnpzemhhbmdAZ21haWwu
Y29tPokBPgQTAQIAKAUCUyezoQIbAwUJADtTgAYLCQgHAwIGFQgCCQoLBBYCAwEC
HgECF4AACgkQf8BlbzQOAraqZgf9HvxjcU1fFMe1oxlndYG962BGZWkKsy/8EHQx
8cRuxGcIgIQ5W+UmzFtWqYVHFlAZcYOe69pkTGx6/bEyLnWRD3ZnaQ9uzM1bsFiF
xKV9+rRzO5S7DvqkOYISCxX8IygDOiYfiExRCgFP9xMLRj3GgUI3D/eprbKycAr1
zV42C20iwuoPtgAVPInX2zde+Qi7FQCGeD/7/yKNeSRhi7zT3KxA8S9L4MxhKS0I
gnR5rvw3paWTfK7MwyP8Cn06E9Rxg/XQqnlOYhMtqKrgWMovJapyFOFXiE8lVjlt
nn30bJz6NK1zNPQw+t4M4J0OnCLv7pm8gVMSL2wigzkNcDYLNLkBDQRTJ7OhAQgA
t4FopDxKKJYeIpjtJ9fZqJV7oR/gu0Yh/aYuWQYPqHE/RNpMtJCPEDoPGcVClq6o
XoEmZswpnfo7AoZLQsWah+Q4ffM0Y8y7HTyjhDDeF7bukBehVOZHaiv8tviA0+bW
MOPhb5bj/H8qi8hrL505SigYcO8uwQieIjmNHB9jk9a+VHZHhUbzB9RPEEaqqPbx
xPBRkTfCnEqq+tGIxKHW6cApQBQYAEP/rFTaLswISMT3+RCCBLPfohX9beqgNUpG
5kQeSPpm+scG6s2Cs7qK0u6MxO3GovUEypxnwTetpsvgsttCRZTc3fjZYB0izY4e
k5VVKuOB0gNu62/i488rPwARAQABiQElBBgBAgAPBQJTJ7OhAhsMBQkAO1OAAAoJ
EH/AZW80DgK2Ru8H/0yoAwC74yLW6Iaod8wwtvwt46A3D4Nh0fJvE1vPWFCE7kmG
l2bmT7UbdP93T6JG02xerYwkV7qw+jxBetmgsBYjuPw8fTz5uLsbcCbIPhqBYJyE
ygzS/JcI11ttQmEvtrp/YyqNJx48wsD0uxNOt7SX9heMB9TGitDT6ohvhQtkq3n9
uemcrB2n3lKOc0eJiMY1gjBoB+m8vm5PJ9iF4r8qFSD1MQko2XTAY08BpNwTaLMD
Frr0VskrjBSNOzW7FavmlfkqApFgbrAGFaxYayMduDrxJ39WyH2h1iTq4KUUv1CO
T+mD6NC3QP9J2JxoHWIWVeaxJ0OzpmRDoUsZb0w=
=h/0I
-----END PGP PUBLIC KEY BLOCK-----
使用gpg来加密解密
amrzs@ubuntu:~$ gpg -r amrzs -e hello.c
amrzs@ubuntu:~$ gpg -d hello.c.gpg
您需要输入密码,才能解开这个用户的私钥:“amrzs (rsa for information security course) <myemail@gmail.com>”
2048 位的 RSA 密钥,钥匙号 13F9301C,建立于 2014-03-18 (主钥匙号 340E02B6)
gpg: 由 2048 位的 RSA 密钥加密,钥匙号为 13F9301C、生成于 2014-03-18
“amrzs (rsa for information security course) <myemail@gmail.com>”
#include <stdio.h>
int main(){
return 0;
}
其中要输入密码,应该是用来对使用私钥的控制,私钥应该是看不到的。
GPG指令简略介绍
amrzs@ubuntu:~$ gpg --help
gpg (GnuPG) 1.4.14
Copyright (C) 2013 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.
Home: ~/.gnupg
支持的算法:
公钥: RSA, RSA-E, RSA-S, ELG-E, DSA
对称加密: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
散列: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
压缩: 不压缩, ZIP, ZLIB, BZIP2
语法:gpg [选项] [文件名]
签名、检查、加密或解密
默认的操作依输入数据而定
指令:
-s, --sign [文件名] 生成一份签名
--clearsign [文件名] 生成一份明文签名
-b, --detach-sign 生成一份分离的签名
-e, --encrypt 加密数据
-c, --symmetric 仅使用对称加密
-d, --decrypt 解密数据(默认)
--verify 验证签名
--list-keys 列出密钥
--list-sigs 列出密钥和签名
--check-sigs 列出并检查密钥签名
--fingerprint 列出密钥和指纹
-K, --list-secret-keys 列出私钥
--gen-key 生成一副新的密钥对
--delete-keys 从公钥钥匙环里删除密钥
--delete-secret-keys 从私钥钥匙环里删除密钥
--sign-key 为某把密钥添加签名
--lsign-key 为某把密钥添加本地签名
--edit-key 编辑某把密钥或为其添加签名
--gen-revoke 生成一份吊销证书
--export 导出密钥
--send-keys 把密钥导出到某个公钥服务器上
--recv-keys 从公钥服务器上导入密钥
--search-keys 在公钥服务器上搜寻密钥
--refresh-keys 从公钥服务器更新所有的本地密钥
--import 导入/合并密钥
--card-status 打印智能卡状态
--card-edit 更改智能卡上的数据
--change-pin 更改智能卡的 PIN
--update-trustdb 更新信任度数据库
--print-md 算法 [文件]
使用指定的散列算法打印报文散列值
选项:
-a, --armor 输出经 ASCII 封装
-r, --recipient 某甲 为收件者“某甲”加密
-u, --local-user 使用这个用户标识来签名或解密
-z N 设定压缩等级为 N (0 表示不压缩)
--textmode 使用标准的文本模式
-o, --output 指定输出文件
-v, --verbose 详细模式
-n, --dry-run 不做任何改变
-i, --interactive 覆盖前先询问
--openpgp 行为严格遵循 OpenPGP 定义
--pgp2 生成与 PGP 2.x 兼容的报文
(请参考在线说明以获得所有命令和选项的完整清单)
范例:
-se -r Bob [文件名] 为 Bob 这个收件人签名及加密
--clearsign [文件名] 做出明文签名
--detach-sign [文件名] 做出分离式签名
--list-keys [某甲] 显示密钥
--fingerprint [某甲] 显示指纹
请向 <gnupg-bugs@gnu.org> 报告程序缺陷。
请向 <i18n-zh@googlegroups.com> 反映简体中文翻译的问题。