GPG加密解密过程
1、Linux系统下
1.安装
yum安装html
[root@POC-ORACLE ~]# yum install gnupg
下载安装包安装linux
https://www.gnupg.org/download/index.en.html
查看gpg帮助redis
[root@POC-ORACLE ~]# gpg --help
gpg (GnuPG) 2.0.14 libgcrypt 1.4.5 Copyright (C) 2009 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. ...... 支持的算法: 公钥:RSA, ELG, DSA 对称加密:3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 压缩:不压缩, ZIP, ZLIB, BZIP2 语法:gpg [选项] [文件名] 签名、检查、加密或解密 默认的操做依输入数据而定 指令: -s, --sign make a signature --clearsign make a clear text signature -b, --detach-sign 生成一份分离的签名 -e, --encrypt 加密数据 -c, --symmetric 仅使用对称加密 -d, --decrypt 解密数据(默认) --verify 验证签名 -k, --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 print message digests --server run in server mode 选项: -a, --armor 输出经 ASCII 封装 -r, --recipient USER-ID encrypt for USER-ID -u, --local-user USER-ID use USER-ID to sign or decrypt -z N set compress level to N (0 disables) --textmode 使用标准的文本模式 -o, --output FILE write output to FILE -v, --verbose 详细模式 -n, --dry-run 不作任何改变 -i, --interactive 覆盖前先询问 --openpgp 行为严格遵循 OpenPGP 定义 (请参考在线说明以得到全部命令和选项的完整清单) 范例: -se -r Bob [文件名] 为 Bob 这个收件人签名及加密 --clearsign [文件名] 作出明文签名 --detach-sign [文件名] 作出分离式签名 --list-keys [某甲] 显示密钥 --fingerprint [某甲] 显示指纹 显示帮助安装成功
2.生成密钥
[root@POC-ORACLE ~]# gpg --gen-key
gpg (GnuPG) 2.0.14; Copyright (C) 2009 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 您所要求的密钥尺寸是 2048 位 请设定这把密钥的有效期限。 0 = 密钥永不过时 <n> = 密钥在 n 天后过时 <n>w = 密钥在 n 周后过时 <n>m = 密钥在 n 月后过时 <n>y = 密钥在 n 年后过时 密钥的有效期限是?(0) 0 密钥永远不会过时 以上正确吗?(y/n)y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" 真实姓名:lyzkey 电子邮件地址:lyzkey@qq.com 注释: 您选定了这个用户标识: “lyzkey <lyzkey@qq.com>” 更改姓名(N)、注释(C)、电子邮件地址(E)或肯定(O)/退出(Q)?o 您须要一个密码来保护您的私钥。
输入两次密码 can't connect to `/root/.gnupg/S.gpg-agent': 没有那个文件或目录 咱们须要生成大量的随机字节。这个时候您能够多作些杂事(像是敲打键盘、移动 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会得到足够的熵数。 几分钟后完成生成 gpg: 密钥 10A20444 被标记为绝对信任 公钥和私钥已经生成并经签名。 gpg: 正在检查信任度数据库 gpg: 须要 3 份勉强信任和 1 份彻底信任,PGP 信任模型 gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u pub 2048R/10A20444 2018-04-29 密钥指纹 = 9259 721A 61DA 6C18 3DBA 05CE 9068 BA24 10A2 0444 uid lyzkey <lyzkey@qq.com> sub 2048R/4B7C31FC 2018-04-29
另外一台服务器上一样建立密钥算法
[root@POC-APP ~]# gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048R/F98FA558 2017-12-07 uid lyzkk <lyzkk@qq.com> sub 2048R/B3A4A822 2017-12-07
3.导出公钥
[root@POC-APP ~]# gpg --armor --output lyzkk.asc --export F98FA558 F98FA558 为pub key的ID
公钥导出文件 可vi查看数据库
[root@POC-APP ~]# ll lyzkk.asc -rw-r--r--. 1 root root 1703 12月 7 18:29 lyzkk.asc
4.导入公钥
将公钥发布,导入另外一台服务器服务器
[root@POC-ORACLE ~]# gpg --import lyzkk.asc gpg: 密钥 F98FA558:公钥“lyzkk <lyzkk@qq.com>”已导入 gpg: 合计被处理的数量:1 gpg: 已导入:1 (RSA: 1)
5.文件加密
给文件不加签,加密ide
[root@POC-ORACLE ~]# gpg --recipient lyzkk --output install.log.asc --encrypt install.log gpg: B3A4A822:没有证据代表这把密钥真的属于它所声称的持有者 pub 2048R/B3A4A822 2017-12-07 lyzkk <lyzkk@qq.com> 主钥指纹: EE13 B668 8956 7766 EEF7 6DE2 67F5 B833 F98F A558 子钥指纹: B6DA 032C 47B4 649E 1046 8CE4 FB2C 55EF B3A4 A822 这把密钥并不必定属于用户标识声称的那我的。若是您真的知道自 己在作什么,您能够在下一个问题回答 yes。 不管如何仍是使用这把密钥吗?(y/N)y
上传到有对应私钥解密的服务器
ui
6.文件解密
[root@POC-APP ~]# gpg --decrypt install.log.asc --output install.log 用法:gpg [选项] --decrypt [文件名]
参数顺序不能反this
[root@POC-APP ~]# gpg --output install.log --decrypt install.log.asc
您须要输入密码,才能解开这个用户的私钥:“lyzkk <lyzkk@qq.com>” 2048 位的 RSA 密钥,钥匙号 B3A4A822,创建于 2017-12-07 (主钥匙号 F98FA558) can't connect to `/root/.gnupg/S.gpg-agent': 没有那个文件或目录 gpg: 由 2048 位的 RSA 密钥加密,钥匙号为 B3A4A82二、生成于 2017-12-07 “lyzkk <lyzkk@qq.com>”
解密后的文件加密
7.删除密钥
删除钥匙前须要先删除私钥
[root@POC-ORACLE ~]# gpg --delete-key lyzkey gpg (GnuPG) 2.0.14; Copyright (C) 2009 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. gpg: 公钥“lyzkey”有对应的私钥! gpg: 请先使用“--delete-secret-keys”选项来删除它。 [root@POC-ORACLE ~]# gpg --delete-secret-keys lyzkey gpg (GnuPG) 2.0.14; Copyright (C) 2009 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. sec 2048R/CCB014D0 2018-04-28 lyzkey <lyzkey@qq.com> 要从钥匙环里删除这把密钥吗?(y/N)y 这是一把私钥!――真的要删除吗?(y/N)y [root@POC-ORACLE ~]# gpg --delete-keys lyzkey gpg (GnuPG) 2.0.14; Copyright (C) 2009 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. pub 2048R/CCB014D0 2018-04-28 lyzkey <lyzkey@qq.com> 要从钥匙环里删除这把密钥吗?(y/N)y
8.涉及命令
一、生成密钥对:gpg --gen-key 为用户生成新密钥对。需提供:密钥类型(默认为RSA/RSA);密钥长度(以位为单位,越长越强);过时时间(以防密钥损坏);填:名称、电子邮箱、标识密钥全部者的注释;密码短语(必须提供,若是私钥被盗,将没法使用)。 二、列出公钥:gpg --list-keys 列出所拥有的公钥:他们本身的公钥以及从与之通讯的其余人那里导入的任何公钥。 三、导出公钥:gpg –export –armor key-id -o file.key 将公钥导出至文件,以便于其余人使用。–armor选项以文本形式显示输出,而非二进制格式。key-id是电子邮箱地址或在–list-keys的pub行中列出的八位十六进制数。 四、导入公钥:gpg –import file.key 从发送给您的密钥文件中导入其余人的公钥 五、加密文件:gpg –encrypt –armor -r key-id file 用key-id的公钥加密消息。若是未提供-r key-id,命令将提示收件人输入。默认输出文件为file.asc. 六、解密文件:gpg –decrypt file
2、Windows系统下
1.安装
https://www.gnupg.org/download/index.en.html
安装对应密钥管理软件
2.新建密钥对
输入信息
3.导入公钥
导入完成
公钥导入成功
4.加密文件
点击加密按钮,选择加密文件
选择为他人加密
加密成功
5.解密文件
用linux端私钥解密
[root@POC-APP ~]# gpg --output codetemplates.xml --decrypt codetemplates.xml.gpg
解密成功
6.删除密钥
右键删除便可