V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
gowl
V2EX  ›  奇思妙想

如何用 OpenSSL 在 V 站给我发私信

  •  
  •   gowl · 2023-01-05 06:29:05 +08:00 · 3124 次点击
    这是一个创建于 689 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Step 1 of 4: 保存我的公钥

    把下面这段公钥存到一个文件中,比如 /tmp/ThatPerson.txt。注意「-----BEGIN PUBLIC KEY-----」和「-----END PUBLIC KEY-----」也要一同保存到文件里。

    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC34UeKXRLMkZc0MPRkizTn3Ert
    CAUq2wHlIIPtAtISDNYBr/R9lGD9WCqvuweWq0jSeRVgP25s+BsLuK/PNSpJqvnR
    J4OJLlcKlsL06Ao8PIR8npgY4/Aump/6+1JJUQq9SlCfA3WUjc3dY1dkVySHZbl6
    YIbgCvTptDcWP35H6QIDAQAB
    -----END PUBLIC KEY-----
    

    Step 2 of 4: 加密你的消息

    在 macOS 或 Linux 的命令行中用 OpenSSL 加密你的消息:

    echo "只想让你知道" | openssl pkeyutl -encrypt -inkey /tmp/ThatPerson.txt -pubin | base64

    你会得到类似如下的一段输出:

    rqh9y1BWSWhwIJ+MZXfNMbobTfuwp++DbbWvbHL03ZeECOfVN2UOZn+k+CloktPu3FixK3nsJ3NB
    3j8wgektGxTETnq/mRg8Yl6LcuW2ajV+BRWMmSE2EXvFH7WfYwUyn3MNQwi6dB4NQGU1kV3PS0Ds
    njHazyQislkL9f3E9K8=
    

    Step 3 of 4: 把加密过的消息传给我

    你可以在任意一个我发的帖子下复制粘贴上面一步得到的输出,我会收到通知并看到。

    Step 4 of 4: 我会解密并阅读你的消息:)

    29 条回复    2023-01-14 12:04:55 +08:00
    Rocketer
        1
    Rocketer  
       2023-01-05 06:38:35 +08:00 via iPhone
    你可以做个 v2 客户端,自动这一过程
    icegaze
        2
    icegaze  
       2023-01-05 07:17:43 +08:00 via Android
    挺不错的,
    但是公钥的(可信)分发是个头疼的事儿。

    也就是,如何防止公钥伪造 /篡改、如何证明你是你这个问题。
    neighbads
        3
    neighbads  
       2023-01-05 07:34:14 +08:00
    @icegaze 公钥不用证明。不用防篡改,这种用途下 就是“公”的意义。
    icegaze
        4
    icegaze  
       2023-01-05 07:41:30 +08:00 via Android
    @neighbads

    我描述的不大准确,不是公钥被篡改,

    你以为对方是 A ,其实对方是 B ,但伪装自己是 A…

    所以,
    你以为你在和 A 聊天,
    但其实是用 B 的公钥加密,且给了 B…
    gowl
        5
    gowl  
    OP
       2023-01-05 07:49:10 +08:00
    我把我的公匙也放到了个人会员页面,只要网站不出问题就不会改变: https://v2ex.com/member/gowl
    cxh116
        6
    cxh116  
       2023-01-05 08:07:01 +08:00 via Android
    这场景可以了解下 GPG 。
    gowl
        7
    gowl  
    OP
       2023-01-05 08:08:59 +08:00
    考虑过 GPG ,但觉得 OpenSSL 要比 GPG 更常见,所以选择了 OpenSSL 。
    gowl
        8
    gowl  
    OP
       2023-01-05 08:10:32 +08:00
    在安全性上没有区别,还能尽可能减少别人的麻烦。
    lucybenz
        9
    lucybenz  
       2023-01-05 08:15:37 +08:00
    @icegaze 你说的场景是 A B 互换公钥 发消息时 以发件人的私钥加密,收消息时用发件人的公钥解密
    cat9life
        10
    cat9life  
       2023-01-05 08:19:48 +08:00
    这个有点意思。希望那个大佬可以搞成 v2 插件
    gowl
        11
    gowl  
    OP
       2023-01-05 08:21:53 +08:00
    @cat9life 这个其实不需要插件,只要大家都把自己的 public key 放在个人页面就行了~有了这个,就有了私密的通信渠道,即便网站本身不支持。
    me221
        12
    me221  
       2023-01-05 10:08:10 +08:00
    GPG 为啥不常见.
    commit 签名不就要用吗, 包管理器下载有时候也要拉 gpg 公钥啊
    gowl
        13
    gowl  
    OP
       2023-01-05 10:24:04 +08:00   ❤️ 1
    @me221 可能差不多,我只是推测
    goodryb
        14
    goodryb  
       2023-01-05 11:36:39 +08:00
    @icegaze #4 你这种应该是属于签名吧, 我印象中 加密 和签名 是不一样的逻辑
    gowl
        15
    gowl  
    OP
       2023-01-05 13:21:24 +08:00
    @goodryb 是的,签名是用自己的  private key ,加密使用别人 public key
    retanoj
        16
    retanoj  
       2023-01-05 15:09:12 +08:00
    搞个浏览器插件是不是更方便一些?
    zhchyu999
        17
    zhchyu999  
       2023-01-05 15:17:44 +08:00
    啥原理啊,能科普下么
    retanoj
        18
    retanoj  
       2023-01-05 16:09:16 +08:00
    @zhchyu999 这能有啥原理,公钥加密私钥解密啊
    zhchyu999
        19
    zhchyu999  
       2023-01-05 16:37:55 +08:00
    @retanoj 我明白了通知是靠的本站的回帖通知
    揭秘是自己手动揭秘
    感谢回答
    edis0n0
        20
    edis0n0  
       2023-01-05 16:58:58 +08:00
    建议 @Livid 只允许在 /go/chamber 中发布加密内容,否则大段加密内容出现在正常帖子回复中会严重影响阅读体验
    Livid
        22
    Livid  
    MOD
       2023-01-05 17:44:42 +08:00
    在上面那种方案里,公钥就是钱包地址。
    icegaze
        23
    icegaze  
       2023-01-06 16:51:32 +08:00 via Android
    @goodryb

    RSA 是要别人用 A 的公钥加密,所以只有 A 才能解密看到…我说的意思是,无法证明公示的公钥就是 A 的,如果没有可信平台 /渠道 公示 A 的公钥,人们以为给 A 发送了加密信息,其实是发给了 B…… 嗯,也许 B 就是伪装成 A 的一个中间人……^_^
    icegaze
        24
    icegaze  
       2023-01-06 16:53:07 +08:00 via Android
    @lucybenz

    是的,
    我说的就是公钥的可信交换 /公示…
    就是如何证明『你是你』的问题…-_-||
    lucybenz
        25
    lucybenz  
       2023-01-06 22:18:32 +08:00
    @icegaze 你这就失去逻辑了 哪有什么权威 可信 楼主把他的公钥放到会员主页 支付宝把公钥放到官网 如果你依然不信任 那就不信任吧
    troilus
        26
    troilus  
       2023-01-07 12:38:07 +08:00
    PGP+Mailvelope 这个浏览器插件很方便的啦

    https://mailvelope.com/en
    troilus
        27
    troilus  
       2023-01-07 12:40:41 +08:00
    @icegaze 可以多渠道验证嘛语音视频面基
    testcaoy7
        28
    testcaoy7  
       2023-01-14 10:43:02 +08:00
    l7JtaJDXdCjZghPUo6lpiIHB8SvulOo6Ak+l+3tWIFUCrav24JPc1si3X6a0pu+JBGgVK84Whv9B
    dwsXn3paUKcd2wO9R3xVQhpfC+0xz58qv1z3EThyW02DEv5Aqr3pScUbkdVjkTiu1eiPVbYd+JN9
    kjxUvqWndQfttltjr8Y=
    gowl
        29
    gowl  
    OP
       2023-01-14 12:04:55 +08:00
    @testcaoy7 测试成功:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   900 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:50 · PVG 04:50 · LAX 12:50 · JFK 15:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.