首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉勾
V2EX  ›  程序员

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

  •  
  •   frylkrttj · 57 天前 · 5129 次点击
    这是一个创建于 57 天前的主题,其中的信息可能已经有所发展或是发生改变。

    gpg -k

    pub ***

    uid ***

    sub ***

    gpg -K

    sec ****

    ssb ***

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

    85 回复  |  直到 2019-01-28 10:36:19 +08:00
        1
    frylkrttj   57 天前
    还有一点我想不通:gpg 签名或加密不用选择用私钥匙还是公钥 ?现在都是输入 uid 完事,神知道我是用私钥签名加密的还是公钥?
        2
    frylkrttj   57 天前
    我看了阮一峰的教程他都不知道。

    https://www.ruanyifeng.com/blog/2013/07/gpg.html
        3
    lostberryzz   57 天前
    楼主你这个标题很招人喷
        4
    alvin666   57 天前 via Android
    笑死,人家没写就是人家不知道?

    那你是不是要把你知道的在互联网上都写一遍
        5
    dbw9580   57 天前 via Android   ♥ 17
    我不知道,但是我会去看 GPG 的手册,而不是上网发废文。
        6
    disk   57 天前 via Android
    为什么要知道?想知道 man gpg 看一下很难?
        7
    maogang39   57 天前 via Android
    私钥签名,公钥验证
    公钥加密,私钥解密。
    gpg -k 公钥信息
    gpg -K 私钥信息

    非程序员的小白个人理解。。
        8
    frylkrttj   57 天前
    @alvin666 看人家博客下面的讨论谢谢。

    @bw9580 @disk 没找到
        9
    sdijeenx   57 天前
    you will find this definition by gpg documentation.

    --list-keys
    -k
    --list-public-keys
    List the specified keys. If no keys are specified, then all keys from the configured public keyrings are listed.

    Never use the output of this command in scripts or other programs. The output is intended only for humans and its format is likely to change. The --with-colons option emits the output in a stable, machine-parseable format, which is intended for use by scripts and other programs.

    --list-secret-keys
    -K
    List the specified secret keys. If no keys are specified, then all known secret keys are listed. A # after the initial tags sec or ssb means that the secret key or subkey is currently not usable. We also say that this key has been taken offline (for example, a primary key can be taken offline by exporting the key using the command --export-secret-subkeys). A > after these tags indicate that the key is stored on a smartcard. See also --list-keys.


    https://gnupg.org/documentation/manuals/gnupg/Operational-GPG-Commands.html#Operational-GPG-Commands
        11
    frylkrttj   57 天前
    @sdijeenx #7

    @maogang39 #9

    说了等于没说系列

    @unknown32767 #10 打不开链接
        12
    sdijeenx   57 天前   ♥ 8
    看吧这就是技术忽悠博客为什么有市场的原因╮( ̄▽ ̄)╭
        13
    frylkrttj   57 天前
    @sdijeenx 真正的问题是我帖子最下面那行,跟 #1 楼
        14
    sdijeenx   57 天前   ♥ 1
    pub = public key
    sub = public subkey
    sec = secret key
    ssb = secret subkey
        15
    frylkrttj   57 天前
    @sdijeenx 等你给我 #1 的答案
        16
    chinvo   57 天前 via iPhone   ♥ 2
    我有点想屏蔽你了,不要整天搞事情好不好?
        17
    sdijeenx   57 天前
    私钥保密公钥公开,喜欢的话你可以反过来用。
    @chinvo I say 'what the holy crap' when I try to understand what did she means╮( ̄▽ ̄)╭
        18
    dobelee   57 天前 via Android
    很恶心这种。人各有所长。
        19
    chinvo   57 天前
    如果你想表达自己不懂,来提问,请用提问的方式,这里有一篇 提问的智慧 可以帮助你更好地获取知识

    @sdijeenx #17 反过来极大几率出事

    因为通常导出的私钥中其实是同时包含 n d e 的,所以可以从私钥文件导出公钥
        20
    2exploring   57 天前
    回你一楼的问题,加密用公钥,签名用私钥,这是非对称密钥体系的常识。
        22
    Nitroethane   57 天前 via Android   ♥ 1
    回你一楼的问题:我用你的公钥来加密我要发给你的数据,在你收到加密数据后用你的私钥解密就可以拿到原始数据。我用我的私钥“加密”一段公开的数据,你用我的公钥可以验证这段公开数据是否是我发出的。这里的加密用引号的意思是这个加密过程通常被称为对这段数据进行签名。另,非对称密码体制了解一哈
        23
    noaccounthere   57 天前   ♥ 1
    嗯,作为一个程序员我知道,所以呢
        24
    Raymon111111   57 天前
    知道 "会用 google 查 gpg -k 和 -K 输出含义" 比知道 "gpg -k 和 -K 输出含义" 重要的多.
        25
    frylkrttj   57 天前
    @chinvo 不让问?#16 一发飚我被冻住 1800 秒。

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

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

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

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


    @2exploring @Nitroethane @Raymon111111
        26
    chinvo   57 天前
    @frylkrttj #25

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

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

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

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

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

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

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

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

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


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

    -e Encrypt data to one or more public keys.

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

    我就告诉你,加密用公钥,签名用私钥,没得选,为什么?你自己补习一下非对称密钥的基本原理和用途就明白了。
        31
    2exploring   57 天前   ♥ 1
    不那么冲地跟你说就是:

    “加密用公钥,签名用私钥”和“私钥加密,公钥解密。公钥加密,私钥解密”这两句话里的“加密”的意义是不同的。如果你能理解这两句话,那你的问题就不会存在了。
        32
    chatfeed   57 天前
    回答题主问题,我是程序员,没用过相关命令,所以不知道
        33
    frylkrttj   57 天前
    @chinvo 快 BLOCK 了我。我问个问题都能让你发怒。惹不起惹不起
        34
    xiaoxinxiaobai   57 天前 via Android   ♥ 1
    我是程序员,惭愧了,都没用过
        35
    misaka19000   57 天前
    怎么感觉楼主这么幼稚,你是来解决问题的还是来发泄情绪的?
        36
    xiashali   57 天前
    楼主是不是放假太无聊了来逗我们玩
        37
    frylkrttj   57 天前
    除了 #30 @2exploring 似乎大家还没明白我#1 的问题。但回答的有问题啊。

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


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

    坐等其他大叔正确答案。

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

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

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

    看不懂建议重新学一下语文
        42
    frylkrttj   57 天前
    @xiashali 我的问题是 gpg -e 加密或签名文件为什么不能选择用公钥或者私钥 加密。#30 说 -e 用的是公钥。你自己发给别人信息能用公钥加密给别人吗?
        43
    eamon666   57 天前
    b l o c k。
        44
    frylkrttj   57 天前
    @unknown32767 打不开图。

    @all 各位我似乎恍然大悟了,是不是这样的:相对自己来说,公钥就是用来加密或签名的,私钥就是用来解密或签名的。相对别人就反过来?

    @2exploring
        45
    msg7086   57 天前   ♥ 2
    我是程序员,我不知道-k 和-K 的含义,因为我都是用--list-k 和--list-sec 的。
    爽了吗?
    对了,不用回复我了,我不会收到你的消息的。
        46
    msg7086   57 天前
    PS:downvote 功能不能 downvote 到负数直接沉掉,实在是很可惜……
        47
    2exploring   57 天前
    我自信我答的并没有问题,问题还是楼主你对相关知识的理解不够,还请各位评判。

    本着帮助 @frylkrttj 解决问题的心态,我再好好回复楼主一次,但愿之后你好好做做功课。

    Q:“要是我自己在电脑上用 gpg -e 是公钥加密,那别人拿到我加密的信息,用我公开的公钥还能解开吗?”
    A:#25 你说“首先我非常清除非对称加密的是: 私钥加密,公钥解密。公钥加密,私钥解密。”,但是很明显你还并不清楚,你用你公钥加密的东西,还想用公钥解开?说好的公钥加密私钥解密呢?自然要用你的私钥来解开。

    什么?你想加密一个东西发给对方让对方解开,本着”私钥加密,公钥解密;公钥加密,私钥解密“的基本原理和私钥只能自己持有的前提,那你用自己的私钥加密后发给对方,对方就能”用我公开的公钥还能解开“咯。但是这样做是正确的吗?不对吗?那怎么样才是对的呢?我就不做解答了,点到为止,给题主你自己去发现的机会吧。

    Q:你说 gpg -e Encrypt data to one or more public keys. 是这个意思?明显不对啦。
    A:我已经说出我的意思了,请把你理解的意思说出来。

    最后奉劝楼主一句,少点戾气,现在的你挨喷是该,别人给你推荐提间的智慧是在帮你,让下次有更多的人愿意帮助你。
        48
    frylkrttj   57 天前
    收回我#44 楼的恍然大悟,感觉又错了。
        49
    xiashali   57 天前 via Android   ♥ 1
    你不是懂非对称加密算法的原理吗
    我问你一个问题 GnuPG 生成的 RSA Key 能不能通过私钥得到公钥
        50
    frylkrttj   57 天前
    @xiashali 当然能啦
        51
    xiashali   57 天前 via Android
    所以你还在问什么
        52
    frylkrttj   57 天前
    @xiashali 不对不能
        53
    xiashali   57 天前 via Android   ♥ 1
        54
    Lonely   57 天前 via iPhone
    @gransh 别客气,我已经屏蔽楼主了
        55
    miv   57 天前
    https://github.com/ruby-china/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md
    对于 [程序员是否都知道] 我表示不知道。
    然后呢?这问题后续价值在哪里,如果是问题讨论帖,不应该是这种提问句式。
    或许,有的 v 友 block 楼主然楼主感觉一些 v 友很易怒(见 33 楼),然后楼主就揣测是一些 v 友们不懂然后恼羞成怒(见 37 楼)
    在此说一声,抛开问题,楼主确实不该这么说,毕竟一部分人是过来帮忙解决问题的,看到你这样说,肯定就生气了。
    而且,就是别人知道这个问题,也是没有必要一定要回答你的,这是一种无偿的买卖。
    我相信很大部分人还是本着交流学习的心态过来,所以奉劝一句,不要戾气太重,希望 V2EX 有好的交流环境。
    再这之前,希望楼主学习下《提问的智慧》。
        56
    wysnylc   57 天前
    《提问的智慧》 block
        57
    h3lica   57 天前 via iPhone
    程序员都会手算 rsa 椭圆曲线吗
        58
    refugeezhao2018   57 天前 via Android
    什么都是把问题抛出来,等别人给你解答,自己就失去了一项能力,那就是不会提问。。。。互联网提问些基础性问题的都是傻子,现成的百度谷歌,一堆解答,一定要自己发个贴,你是来浪费时间看大家怎么水你帖子吗?学习靠主动,被动接收的能有多大效果,根据自己的需求,循着自己的思路找寻自己真正需要的答案就行了,我时间多,来水,你时间更多,来看大家一起来水
        59
    frylkrttj   57 天前
    @xiashali 虽然没有直接答案,但被你 #49 一问,我好像真明白了。#53 再补我一下更明白了,这句被冻了 1800 秒。

    @Nitroethane #22,@Aoang #29,说的都对只是我到了#44 脑壳才转过弯来,到了#53 彻底懂了。

    @2exploring #30 #31 说的对但难懂

    我 #44 恍然大悟也是对的,收回#48

    那么问题又来了,如果我使用子密钥,公开的是主公钥?还是子公钥?怎么没看到导出子公钥的命令啦,有看到导出子私钥的命令。
        60
    tachikomachann   57 天前
    你 16 岁了,起码的对人尊重应该要会了吧,请教别人请谦逊一点,搞这个标题被喷活该。
    你每次发帖前,能不能遵照《提问的智慧》先 check 一下自己的贴子?
        61
    frylkrttj   57 天前
    @miv 别人看我问个问题不高兴,对我发怒,玩 block,就不叫戾气?我发帖让人不高兴就叫戾气了?先对我发怒的要 block 我,还要说出来,鼓捣别人也 block 我的,不叫戾气?

    从始至终我就没生过气,一些看我问个 gpg 问题的帖子都会生气的人 满身戾气自己看不到,还要把戾气栽脏到我身上。

    我就一句不高兴 赶快 block,别说出来。搞得大家都不高兴。
        62
    frylkrttj   57 天前
    @refugeezhao2018 比较笨,前面有几个已经告诉我答案了,可我问到了#44 脑壳才拐过弯,现在回过头看其实之前早看过答案了。就像#31 说的等我理解了就明白了。
        63
    refugeezhao2018   57 天前 via Android
    @frylkrttj 多数人来此都希望能看到些有价值有意义的帖子,如果人人都学你,自己不肯钻研,还来水贴浪费大家时间。我看十个帖子,九个水,我只有喷的想法。为啥大家总要提到一个「提问的智慧」,不无道理。互联网垃圾太多,生产垃圾的人更多,破坏了整体风气,浪费了大量时间和金钱,还乐此不疲。。。承认笨就多看,少提问,你的问题早就有答案了
        64
    kaedea   57 天前 via Android
    程序员是否都知道 scoping function 的概念?
        65
    joooooker21   57 天前
    奉劝一句,少作妖.《提问的智慧》 block
        66
    linuap   57 天前
    标题取这样的,我不怪你

    正文是来问问题的还取这样的标题,心里真的没点*数吗
        67
    Aoang   57 天前 via Android
    @frylkrttj 你提问的方式不对,解决问题的思路方向也错了。

    不要带着过多的可能会引起人反感的话语提问,没人会这样。(个别人不用在意)

    针对 PGP,你首先就应该去了解 RSA,这个方向才是正确的。
    对于 PGP 的问题,多数人都是默认你了解 RSA 这种非对称加密方案,你不了解,直接去找答案,就和你问微积分教授一加一等于几一样…

    RSA 非对称加密,几乎就是数学领域了,想深入了解没那么简单。但是你提 RSA 的问题,肯定会有人回答你。
    但是,你找到这个方向了,几乎不难找到答案。
        68
    frylkrttj   57 天前
    @linuap 不懂现代幽默
        69
    zeroDev   57 天前 via Android
    好了……感谢各位的解答~
    不知道楼主懂没懂,
    反正我终于了解什么是私钥了,
    那我就不 block 了
        70
    Rasphino   57 天前 via Android
    连自己的问题都描述不清,建议楼主回初中修读语文
    已 block
        71
    wwppee   57 天前 via Android
    又把非对称加密原理复习了一遍,16 岁能在这个平台接受这样的教育,我是羡慕了,通过楼主的观点表达我还了解了自己 14 岁那时的状态。学到不少
        72
    llrg222   56 天前   ♥ 1
    你成为 v 站以来被最多人 block 的年轻候选人,不懂现代幽默哈哈
        73
    billwsy   56 天前   ♥ 1
    @wwppee 我也想到了小学初中时候自己的样子,惭愧至极

    至于这个问题,我试着这样表达一下:
    ( 1 )假设有 Alice 和 Bob 两个人,Alice 加密(gpg -e)的目的就是让 Bob 能够看到信息,但是其他人看不到。所以 Alice 用 Bob 的公钥加密,通过不安全的信道传输给 Bob,保证了只有 Bob 能看。(即便是 Alice 自己也不能解密密文也没有关系)所以"gpg -e"一定会用公钥,但是这是别人(Bob)的公钥。
    ( 2 )签名的时候消息是公开的,Alice 的目的想让大家知道消息的确是她发出的,也就是证明消息的发出者持有 Alice 的私钥。所以 Alice 用私钥签名,别人可以用 Alice 的公钥验证(解密)签名,但是消息是公开的。
    ( 3 )公钥私钥互换的问题,理论上没有明显的漏洞,但是实际上#29 说出了公钥私钥选择的标准是不一样的,我似乎记得 RSA 中产生公钥的时候有几个参数是固定的。另外,很多实现上,私钥文件中同时包括了私钥和公钥。

    楼主可以重点试着理解一下( 1 )之中的“非对称加密是为了让别人能够解密,而不是自己能够解密,自己不能解密也没有关系”。
        74
    goodan   56 天前 via Android
    你这个标题找喷,自己不知道就不要代入程序员是否知道,说一句你不知道有那么难?
        75
    frylkrttj   56 天前
    @goodan 我是按这个节点取的
        76
    zifangsky   56 天前
    请摆正好自己的态度,是你在请教别人,不是别人求着你来问,而且潜在回答者还是无偿回答你。所以,这种提问方式,会不会被喷自己心里没点 BTree 吗?
        77
    shuax   56 天前
    必须 Block 走好
        78
    frylkrttj   56 天前
    @zifangsky #76 己所不悦勿加于人。你看到哪个认真参与讨论的或回答的看到该帖子是不高兴的。

    看到该贴不爽的多怕是喷子,不是真程序员。
        79
    tachikomachann   56 天前 via Android
    承认自己有错就这么难吗
    那你以后继续保持吧,最好每个帖子都这么问。加油。
        80
    greatghoul   56 天前
    不知道。
        81
    oyjw443523   56 天前
    看看这种标题。这种态度不好的人为什么要教?无视他不就行了
        82
    yuikns   55 天前
    https://www.v2ex.com/t/526688#r_6757118

    回复是 "看得我头大"

    我还敢说什么?
        83
    frylkrttj   55 天前
    @yuikns #82 当时看不懂你的回复,现在才看懂。
        84
    zifangsky   55 天前
    @frylkrttj 已 Block,不谢!
        85
    qooweds   55 天前
    果然放寒假了,各种牛鬼蛇神都出来了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   832 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 19:03 · PVG 03:03 · LAX 12:03 · JFK 15:03
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1