V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WesleyNZ
V2EX  ›  macOS

求一个开源的单项加密的工具,无法逆向解密。只需要核对这个事情是真的就好。

  •  
  •   WesleyNZ · 2020-07-07 00:16:00 +08:00 · 3727 次点击
    这是一个创建于 1387 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如说 我想发一句朋友圈, 我实际上发了一段 md5 值,除了我没人能知道我发的是什么
    同时,我在自己的本地文档上记录我说的实际的话是什么,也只有我一个人知道。
    如果将来有人要核对我当年发的密文是什么意思,我就拿出我的原文,并且加密给他看,证明跟当年我发的是一样的东西。

    请问如何做到呢? md5 觉得不够安全,想要安全程度更高一些的开源的,最好有软件能本地运行,然后我只需要输入‘文字’就可以得到密文的那种。谢谢。

    主要是想记录一些事情。
    56 条回复    2020-07-07 17:46:57 +08:00
    WesleyNZ
        1
    WesleyNZ  
    OP
       2020-07-07 00:18:21 +08:00
    比如说,我发一个 md5 值的朋友圈
    :5D41402ABC4B2A76B9719D911017C592

    然后别人不知道是什么,在没有密码库的情况下 他不知道是 hello
    但是我告诉他,我发的是 hello 他能直接通过 md5 加密来知道我当年说的 hello.
    WesleyNZ
        2
    WesleyNZ  
    OP
       2020-07-07 00:19:39 +08:00
    BBF96C2A7D869A502943E9FD114C1715
    比如说我发的这个,我不告诉你原文你就永远没法知道我发的是什么。
    vk42
        3
    vk42  
       2020-07-07 00:22:41 +08:00
    你需要的是 cryptographic hash,MD5 算是一种,但 MD5 确实不安全了,碰撞成本太低
    直接 SHA-512 就行了,但说实话你这个朋友圈的例子很诡异……
    DCCooper
        4
    DCCooper  
       2020-07-07 00:22:48 +08:00 via iPhone
    表达都没说清楚,到底是要单向加密还是加解密。
    javashell
        5
    javashell  
       2020-07-07 00:24:29 +08:00 via Android
    $2a$14$eWv0WSZriRdKdy0PCkBvleULBurq2Ej1WWy3ctpw6T1OoomzLilXC

    hello
    geelaw
        6
    geelaw  
       2020-07-07 00:28:47 +08:00 via iPhone   ❤️ 1
    搜索 commitment scheme 。
    pelloz
        7
    pelloz  
       2020-07-07 00:30:16 +08:00   ❤️ 1
    你就是需要一个签名而已..用这个
    http://www.jsons.cn/sha/
    WesleyNZ
        8
    WesleyNZ  
    OP
       2020-07-07 00:43:16 +08:00
    @pelloz 在线的我怕不安全 我需要一个离线的方法。谢谢。
    WesleyNZ
        9
    WesleyNZ  
    OP
       2020-07-07 00:44:05 +08:00
    @DCCooper 不好意思啊。我只需要单向加密,密文我自己会保存。
    也就是说丢失了原来的文字我也不会记得我说过什么了。
    leoking6
        10
    leoking6  
       2020-07-07 00:50:28 +08:00 via Android
    @WesleyNZ 用 js 实现的,保存网页离线都能用
    WesleyNZ
        11
    WesleyNZ  
    OP
       2020-07-07 00:51:25 +08:00
    @leoking6 macOS 下我如何保存这个网页并且确认它完全不联网呢?谢谢!
    dingwen07
        12
    dingwen07  
       2020-07-07 00:54:27 +08:00 via iPhone
    import hashlib
    billlee
        13
    billlee  
       2020-07-07 00:55:54 +08:00
    打开 Terminal, 输入 shasum -a 256 [回车]
    输入内容 [回车]
    ctrl + d
    FutherAll
        14
    FutherAll  
       2020-07-07 00:57:17 +08:00 via iPhone
    加盐不是用来解决碰撞的吗?
    cmdOptionKana
        15
    cmdOptionKana  
       2020-07-07 00:57:50 +08:00 via Android
    听起来像是想做类似于版权保护的东西,证明自己是原作者。
    WesleyNZ
        16
    WesleyNZ  
    OP
       2020-07-07 00:58:37 +08:00
    @billlee 这个很牛逼哦! shasum -a 512
    改成这个就是 512 位加密吗?
    好神奇,ctrl+d 为什么就会跳出来结果?是什么快捷键!

    谢谢大神
    WesleyNZ
        17
    WesleyNZ  
    OP
       2020-07-07 00:58:54 +08:00
    @cmdOptionKana 嗯 对的 。
    leoking6
        18
    leoking6  
       2020-07-07 00:59:20 +08:00 via Android   ❤️ 1
    不放心就用 openssl 解决算了呗。。
    echo -n blabla|openssl dgst -sha256
    WesleyNZ
        19
    WesleyNZ  
    OP
       2020-07-07 01:00:26 +08:00
    @leoking6 这个 这个 我看不懂啊 我小白。。能跟 13 楼一样解释一下吗?谢谢!
    leoking6
        20
    leoking6  
       2020-07-07 01:02:25 +08:00 via Android
    @WesleyNZ 跟他那个差不多,我打字的工夫蹦出了好多回复哈哈哈
    WesleyNZ
        21
    WesleyNZ  
    OP
       2020-07-07 01:08:20 +08:00
    @leoking6 对了。。。我 Mac os 用终端的 shasum -a 256..加密出来的数据跟那个 7 楼的数据完全不一样。。我人都傻了。
    WesleyNZ
        22
    WesleyNZ  
    OP
       2020-07-07 01:09:56 +08:00
    @leoking6 我用 7 楼那个网站加密了 hello,结果是 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

    用 Mac os 的终端命令, 是
    5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03

    这是什么鬼!!
    Macguffin
        23
    Macguffin  
       2020-07-07 01:17:20 +08:00 via Android
    @WesleyNZ mac 上多了一个回车键。你在网页里面输入“hello[回车]”得到的效果就一样了
    WesleyNZ
        24
    WesleyNZ  
    OP
       2020-07-07 01:21:55 +08:00
    @Macguffin wtf!!!!!!有办法让 Mac 不输入这个回车键吗?
    leoking6
        25
    leoking6  
       2020-07-07 01:24:42 +08:00 via Android
    @WesleyNZ 输完命令,回车,输入你的内容,直接 ctrl+d
    jadec0der
        26
    jadec0der  
       2020-07-07 02:39:34 +08:00
    Ctrl + D 是发送一个 SIGINT,就是告诉 shasum 输入完了。

    建议你加个盐一起保存起来,不然有可能被穷举猜出来。
    ahhui
        27
    ahhui  
       2020-07-07 02:48:19 +08:00 via iPhone
    单纯 md5 没用,无法证明只有你拥有文本。你需要的是使用 gpg sign message 。给消息签名,无论谁哪怕拥有你的文本和 md5,只要他没用你的私钥,他都无法证明文本属于他。
    loading
        28
    loading  
       2020-07-07 05:34:07 +08:00 via Android
    pgp 更符合你的需求
    tsohgdivil
        29
    tsohgdivil  
       2020-07-07 06:06:21 +08:00
    就是数字签名啊
    tsohgdivil
        30
    tsohgdivil  
       2020-07-07 06:07:53 +08:00
    噢甚至都没那么复杂,如果要求无法逆向解密的话,直接 hash 就行了
    netnr
        31
    netnr  
       2020-07-07 06:51:34 +08:00
    @DCCooper 标题说得很清楚哦
    niubee1
        32
    niubee1  
       2020-07-07 07:18:28 +08:00
    @tsohgdivil hash 的话,任何 hash 都是有碰撞的,只是难易程度的问题。




    @WesleyNZ 你可以用非对称加密的密钥对,用私钥对签名,然后把签名发出去。要证明所有权的话,你提供原文和公钥给对方验签。
    Mutoo
        33
    Mutoo  
       2020-07-07 07:31:50 +08:00
    数据摘要+数据签名
    原文->( sha )->摘要->( private key )->签名
    按你的需要公开「签名」和「 public key 」即可
    签名可以表明这个东西确实是你写的,解开后的摘要可以保证原文没有被窜改。
    lululau
        34
    lululau  
       2020-07-07 08:52:50 +08:00 via iPhone
    你的需求场景 md5 哪点不安全?哪位大佬能根据摘要倒推出原文?看书不光用眼睛,还要用上大脑皮层
    jstony
        35
    jstony  
       2020-07-07 10:10:04 +08:00
    楼主要的就是数字产品签名验证,楼上几位解释的很清楚了。
    DOLLOR
        36
    DOLLOR  
       2020-07-07 10:35:28 +08:00
    把文档添加到压缩包里,然后打开压缩包,找到文件的 CRC32 值。
    WesleyNZ
        37
    WesleyNZ  
    OP
       2020-07-07 10:37:41 +08:00
    @jadec0der 什么是加盐? 无所谓 就是一些很小的内容!
    WesleyNZ
        38
    WesleyNZ  
    OP
       2020-07-07 10:40:07 +08:00
    @niubee1 准确来说我的要求其实很简单:
    举个例子: 我发个朋友圈:
    18321032180381209e8u209u10(假设是 md5 加密结果),
    10 年以后我把原文拿出来,别人通过我这个原文,通过 md5 加密,就知道我 10 年前确实说过这句话。
    WesleyNZ
        39
    WesleyNZ  
    OP
       2020-07-07 10:41:17 +08:00
    @netnr 我觉得我组织的内容也没什么问题啊 我重新看了一遍。。谢谢帮我说句话哈。
    tsohgdivil
        40
    tsohgdivil  
       2020-07-07 11:18:00 +08:00 via iPhone
    @niubee1 你这说的。。如果哈希算法本身可靠的话,私钥碰撞的概率也不比哈希碰撞的概率低啊
    lzxz1234
        41
    lzxz1234  
       2020-07-07 11:21:20 +08:00
    你需要的只是一个低佣金的区块链公链
    wangkun025
        42
    wangkun025  
       2020-07-07 11:23:48 +08:00
    这个分明是非对称加密。
    WesleyNZ
        43
    WesleyNZ  
    OP
       2020-07-07 11:33:22 +08:00 via iPhone
    我还是不太懂具体如何做这个 PBG
    @Mutoo
    Mutoo
        44
    Mutoo  
       2020-07-07 12:10:59 +08:00
    @WesleyNZ

    把下面的内容复制到 https://keybase.io/verify 就可以验证由我签名的信息

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA512

    de43ec5e047ad58051f425ec72d1109805a6c4db
    -----BEGIN PGP SIGNATURE-----
    Version: Keybase OpenPGP v2.1.13
    Comment: https://keybase.io/crypto

    wsFcBAABCgAGBQJfA/QcAAoJEI4hlzgPMwv6HjIP/jNqNsDZaKzaljr/1dZ/xMcO
    A3hfJ4/rJsvY1UmyVCDK+dkhsEaHY9+MxYS7Xea/h2v2I5v/1evE/+7Lpm5FGvFs
    JAa5q+Ub654ReN8sTw8BJXoeVosbuR+K7QONZy9P5IK0f+4gPKAHbF0yfliK8Hjd
    F6l9WzOC+UuVx/KS8gmPa4cUoi+4zMkuPx/ea0j5w7YodA0B0QNKgFry+qsqVzrX
    vZsdosDReo8GpKRIIOQYHjiYSRee5Qm8qnDOPOLN22yHdTcQmvQ6TkNCYfS6C0n3
    vtUPPsiPiIVjsfTDr9lKci8pQRqlaYgMzMd0Oa1t8IZ5dogcde2Z19A01WhMvmi4
    SWA0HLcHYBLHPZ2spIx/r50Xu3sAYIRSpAiCzX5lpYKIDKu1/mU916cKu7onX3KN
    6+iGnoaaMIkE4r27pi91uyewN5zbBYIul6nsuTOms5I5by1VOQ4iYFqDogVQQfpW
    nSclIcg5SxtGHyoUZQi1fK7H835b51HzQgubWqIoF8ALTmugp52JM61lLm5gL4r0
    6QlgkMScXISRaQ2cmX9o6/v1aY28bquzlthFtjL/aV4zLp0e7otpgOSHLLqSa7/O
    +Xh57Ynev/NtAjEs2QUF7cxA647/YCzNjGNx9CSZd+k0hkZuIaGM4zou/QpZqkCA
    kQ73QkyP4UsCsdtzIkvk
    =E51E
    -----END PGP SIGNATURE-----

    通过验证表明这个信息确实是我发的,别人无法伪造,我也不能否认我发了这个信息。

    其次内容里的 sha512 可以表明某段文字与之相应。而如果我放出原文:

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.

    别人可以在 http://www.sha1-online.com/ 验证这段原文确实与上文的 sha512 匹配。

    你需要的就是注册一个 keybase.io 并保存好你的私钥即可。
    phy25
        45
    phy25  
       2020-07-07 12:23:49 +08:00 via Android
    SingeeKing
        46
    SingeeKing  
       2020-07-07 12:27:15 +08:00 via iPhone
    Keybase 有工具
    sockpuppet9527
        47
    sockpuppet9527  
       2020-07-07 12:54:16 +08:00
    没人吐槽 md5 是消息摘要算法吗?消息摘要和加密是两回事,加密分为对称,非对称。

    还有你说 md5 不安全,那是因为有碰撞和字典的存在。

    拜托,目前时间攻击(指非量子) RSA2048 位都做不到,而且某些开源的还加入了所谓的抗量子。

    但是我就想问一下:谁会闲到没事去破解你的朋友圈?
    sunmker
        48
    sunmker  
       2020-07-07 13:15:20 +08:00
    虽然我理解你的意思,但是我想和你说一个知识点,md5 是摘要,不是加密
    beneo
        49
    beneo  
       2020-07-07 13:46:36 +08:00
    你们还不容约定一本书,然后第几行第几个字,这样。
    tuwulin365
        50
    tuwulin365  
       2020-07-07 14:40:14 +08:00
    电子签名解决问题
    WesleyNZ
        51
    WesleyNZ  
    OP
       2020-07-07 14:53:47 +08:00 via iPhone
    @Mutoo 我不需要加密...我只需要让别人不知道我发的是什么 只有我才能知道
    chinvo
        52
    chinvo  
       2020-07-07 15:10:28 +08:00
    这就是数字签名 (digital signature)

    PGP, RSA, ECC 都能提供可靠的数字签名

    这个场景, 建议用 PGP
    gesse
        53
    gesse  
       2020-07-07 15:45:14 +08:00
    可以搜索 HMAC,应该是你要找的。

    楼主的想法,其实我可以知道很多场景可以使用。
    Mutoo
        54
    Mutoo  
       2020-07-07 16:39:33 +08:00
    @WesleyNZ 一个是数据摘要,一个是数字签名,不算是加密。
    huawuya
        55
    huawuya  
       2020-07-07 16:40:11 +08:00
    sha256 就足够了,话说楼主这是要当预言帝吗?:)
    WesleyNZ
        56
    WesleyNZ  
    OP
       2020-07-07 17:46:57 +08:00 via iPhone
    @huawuya 对对对 你知道了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5338 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 08:29 · PVG 16:29 · LAX 01:29 · JFK 04:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.