程序员是否都知道 gpg -k 和-K 输出含义 ?

2019-01-26 10:46:58 +08:00
 frylkrttj

gpg -k

pub ***

uid ***

sub ***

gpg -K

sec ****

ssb ***

问题来了,pub,sub,sec,ssb 是什么意思。uid 我知道了。

7484 次点击
所在节点    程序员
85 条回复
inhzus
2019-01-26 13:01:01 +08:00
Nitroethane
2019-01-26 13:08:02 +08:00
回你一楼的问题:我用你的公钥来加密我要发给你的数据,在你收到加密数据后用你的私钥解密就可以拿到原始数据。我用我的私钥“加密”一段公开的数据,你用我的公钥可以验证这段公开数据是否是我发出的。这里的加密用引号的意思是这个加密过程通常被称为对这段数据进行签名。另,非对称密码体制了解一哈
noaccounthere
2019-01-26 13:11:15 +08:00
嗯,作为一个程序员我知道,所以呢
Raymon111111
2019-01-26 13:21:28 +08:00
知道 "会用 google 查 gpg -k 和 -K 输出含义" 比知道 "gpg -k 和 -K 输出含义" 重要的多.
frylkrttj
2019-01-26 13:36:14 +08:00
@chinvo 不让问?#16 一发飚我被冻住 1800 秒。

似乎很多不知道含义的,看到这个问题大怒。

我也没想到这么简单的问题,居然很多人都不能理解。

#1 问题是不想多开帖,被人讨厌了才放在这个帖子之下。没想到还是被人讨厌了。哭。。。

首先我非常清除非对称加密的是: 私钥加密,公钥解密。公钥加密,私钥解密。#1 的问题是,我电脑有自己的公钥和私钥匙,为什么我选择签名或加密的时候没有提示该选择我自己的私钥还是公钥。我签名后从哪里知道这是用私钥签名加密的还是公钥。


@2exploring @Nitroethane @Raymon111111
chinvo
2019-01-26 13:37:09 +08:00
@frylkrttj #25

> 这里有一篇 提问的智慧 可以帮助你更好地获取知识
gransh
2019-01-26 13:48:24 +08:00
@chinvo +1 找了半天想屏蔽这个人
sdijeenx
2019-01-26 14:10:08 +08:00
公钥之所以叫公钥是因为他是公开的,同理私钥也是一样,如果你选择了密钥 a 当私钥,那么另一个密钥 b 就自动变成了公钥。或者如果你选择了密钥 b 当私钥,那么另一个密钥 a 就自动变成了公钥。
一共就两个密钥还用得着选么?
Aoang
2019-01-26 14:13:33 +08:00
什么叫程序员,能不能别打标签?
有人规定必须使用 gpg 吗?
使用一个工具必须要了解各种使用方法吗?
问问题之前,麻烦自己去找答案,找不到答案,麻烦语气好一点,没人欠你的。

非对称加密都是,公钥负责加密,私钥负责解密;私钥负责签名,公钥负责验证。加密方案和签名方案是不同的。

在 RSA 加密方案中,生成了公私钥。
可能你会认为,公私钥哪个公开出去用于加密,哪个保留起来用于解密,都是一样的。
实际上这是错误的,暴露了自己的无知。

对于最基本的非对称加密方案,私钥加密、公钥解密,私钥签名、私钥验证,理论上完全可行。

想做到你说的,私钥加密,公钥解密;私钥签名,私钥验证,理论上完全可行。

但是在实际中,因为考虑到第三方可能会利用各种可能的方法去攻击密码方案,而为了避免这些攻击,方案中每个参数的选取都有非常严格的要求。

所以,公私钥的要求是截然不同的。

你按照密码标准生成了密钥,公钥留下来解密,私钥公布出去。在第三方眼中,你的公钥其实就是私钥,但这个公钥是不满足密码标准的要求的,很可能可以破解你的密码方案。

为了防止有人刚,我先给堵死一条路。
可以让公钥和私钥都达到一定的复杂度级别,这样或许这个问题就不存在了。
但是 RSA 的加解密是需要很多大指数取模的,本来就很慢,这个做法会慢到什么地步?毫无意义。


综上所述,从非对称加密原理上,公私钥互换没问题。从实际上,公私钥有完全不同的要求,这些要求保证了加密方案尽可能的安全、高效。所以,公钥负责加密,私钥负责解密,私钥负责签名,公钥负责验证,不可互换。
2exploring
2019-01-26 15:05:48 +08:00
@frylkrttj
#25 “首先我非常清除非对称加密的是: 私钥加密,公钥解密。公钥加密,私钥解密。”
这句话没有问题,但是这句话里的“加密”和 gpg -e 里加密的意思并不完全相同,gpg -e 是什么意思,你不会看 man pages 吗?

-e Encrypt data to one or more public keys.

人家都指明加密用的是公钥了,所以还用提示你怎么选吗?对于签名同理,你自己去理解签名是怎么工作的吧。我就提醒你一点,签名和验证也是一个加密和解密的过程,和“私钥加密,公钥解密。公钥加密,私钥解密”这句话是统一的。

我就告诉你,加密用公钥,签名用私钥,没得选,为什么?你自己补习一下非对称密钥的基本原理和用途就明白了。
2exploring
2019-01-26 15:12:07 +08:00
不那么冲地跟你说就是:

“加密用公钥,签名用私钥”和“私钥加密,公钥解密。公钥加密,私钥解密”这两句话里的“加密”的意义是不同的。如果你能理解这两句话,那你的问题就不会存在了。
chatfeed
2019-01-26 16:03:08 +08:00
回答题主问题,我是程序员,没用过相关命令,所以不知道
frylkrttj
2019-01-26 16:07:06 +08:00
@chinvo 快 BLOCK 了我。我问个问题都能让你发怒。惹不起惹不起
xiaoxinxiaobai
2019-01-26 16:16:18 +08:00
我是程序员,惭愧了,都没用过
misaka19000
2019-01-26 16:17:21 +08:00
怎么感觉楼主这么幼稚,你是来解决问题的还是来发泄情绪的?
xiashali
2019-01-26 16:31:46 +08:00
楼主是不是放假太无聊了来逗我们玩
frylkrttj
2019-01-26 16:35:08 +08:00
除了 #30 @2exploring 似乎大家还没明白我#1 的问题。但回答的有问题啊。

看过 gpg 简介的都知道公钥是公开给别人用的,你说 gpg -e 是指用公钥加密。要是我自己在电脑上用 gpg -e 是公钥加密,那别人拿到我加密的信息,用我公开的公钥还能解开吗?谁都公钥加密后再用公钥解不开吧!


你说 gpg -e Encrypt data to one or more public keys. 是这个意思?明显不对啦。

坐等其他大叔正确答案。

不知道说出来不丢脸,不知道被我这一帖搞的脑修成怒那才丢脸。

@misaka19000 你从主帖看到#1 #2 看到我的问题冒火了? 明明是一些人不知道看到我问这个自己可能感觉丢脸了,脑修成怒
iloxmn
2019-01-26 16:37:28 +08:00
Block 走好不送,自己起的标题心里没点 ACD 数吗?
frylkrttj
2019-01-26 16:38:21 +08:00
@xiashali 厉害的问不厉害的才叫逗,我什么都不懂,我真是满脑子浆糊。
xiashali
2019-01-26 16:45:20 +08:00
GPG 一般使用诸如 RSA 和 ECC 一类的不对称加密算法。在这一类算法中,一对密钥被生成使用,其中公钥公开发布,私钥则由所有者自行保存。公钥所加密的内容可以用私钥解密,但公钥不能解开公钥加密的数据,反之亦然。

https://zh.wikibooks.org/zh-hans/GPG
CC BY-SA 3.0

看不懂建议重新学一下语文

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/530782

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX