1
WesleyNZ OP 比如说,我发一个 md5 值的朋友圈
:5D41402ABC4B2A76B9719D911017C592 然后别人不知道是什么,在没有密码库的情况下 他不知道是 hello 但是我告诉他,我发的是 hello 他能直接通过 md5 加密来知道我当年说的 hello. |
2
WesleyNZ OP BBF96C2A7D869A502943E9FD114C1715
比如说我发的这个,我不告诉你原文你就永远没法知道我发的是什么。 |
3
vk42 2020-07-07 00:22:41 +08:00
你需要的是 cryptographic hash,MD5 算是一种,但 MD5 确实不安全了,碰撞成本太低
直接 SHA-512 就行了,但说实话你这个朋友圈的例子很诡异…… |
4
DCCooper 2020-07-07 00:22:48 +08:00 via iPhone
表达都没说清楚,到底是要单向加密还是加解密。
|
5
javashell 2020-07-07 00:24:29 +08:00 via Android
$2a$14$eWv0WSZriRdKdy0PCkBvleULBurq2Ej1WWy3ctpw6T1OoomzLilXC
hello |
6
geelaw 2020-07-07 00:28:47 +08:00 via iPhone 1
搜索 commitment scheme 。
|
7
pelloz 2020-07-07 00:30:16 +08:00 1
你就是需要一个签名而已..用这个
http://www.jsons.cn/sha/ |
9
WesleyNZ OP @DCCooper 不好意思啊。我只需要单向加密,密文我自己会保存。
也就是说丢失了原来的文字我也不会记得我说过什么了。 |
12
dingwen07 2020-07-07 00:54:27 +08:00 via iPhone
import hashlib
|
13
billlee 2020-07-07 00:55:54 +08:00
打开 Terminal, 输入 shasum -a 256 [回车]
输入内容 [回车] ctrl + d |
14
FutherAll 2020-07-07 00:57:17 +08:00 via iPhone
加盐不是用来解决碰撞的吗?
|
15
cmdOptionKana 2020-07-07 00:57:50 +08:00 via Android
听起来像是想做类似于版权保护的东西,证明自己是原作者。
|
16
WesleyNZ OP |
17
WesleyNZ OP @cmdOptionKana 嗯 对的 。
|
18
leoking6 2020-07-07 00:59:20 +08:00 via Android 1
不放心就用 openssl 解决算了呗。。
echo -n blabla|openssl dgst -sha256 |
21
WesleyNZ OP @leoking6 对了。。。我 Mac os 用终端的 shasum -a 256..加密出来的数据跟那个 7 楼的数据完全不一样。。我人都傻了。
|
22
WesleyNZ OP @leoking6 我用 7 楼那个网站加密了 hello,结果是 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
用 Mac os 的终端命令, 是 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03 这是什么鬼!! |
23
Macguffin 2020-07-07 01:17:20 +08:00 via Android
@WesleyNZ mac 上多了一个回车键。你在网页里面输入“hello[回车]”得到的效果就一样了
|
26
jadec0der 2020-07-07 02:39:34 +08:00
Ctrl + D 是发送一个 SIGINT,就是告诉 shasum 输入完了。
建议你加个盐一起保存起来,不然有可能被穷举猜出来。 |
27
0TSH60F7J2rVkg8t 2020-07-07 02:48:19 +08:00 via iPhone
单纯 md5 没用,无法证明只有你拥有文本。你需要的是使用 gpg sign message 。给消息签名,无论谁哪怕拥有你的文本和 md5,只要他没用你的私钥,他都无法证明文本属于他。
|
28
loading 2020-07-07 05:34:07 +08:00 via Android
pgp 更符合你的需求
|
29
tsohgdivil 2020-07-07 06:06:21 +08:00
就是数字签名啊
|
30
tsohgdivil 2020-07-07 06:07:53 +08:00
噢甚至都没那么复杂,如果要求无法逆向解密的话,直接 hash 就行了
|
32
niubee1 2020-07-07 07:18:28 +08:00
@tsohgdivil hash 的话,任何 hash 都是有碰撞的,只是难易程度的问题。
@WesleyNZ 你可以用非对称加密的密钥对,用私钥对签名,然后把签名发出去。要证明所有权的话,你提供原文和公钥给对方验签。 |
33
Mutoo 2020-07-07 07:31:50 +08:00
数据摘要+数据签名
原文->( sha )->摘要->( private key )->签名 按你的需要公开「签名」和「 public key 」即可 签名可以表明这个东西确实是你写的,解开后的摘要可以保证原文没有被窜改。 |
34
lululau 2020-07-07 08:52:50 +08:00 via iPhone
你的需求场景 md5 哪点不安全?哪位大佬能根据摘要倒推出原文?看书不光用眼睛,还要用上大脑皮层
|
35
jstony 2020-07-07 10:10:04 +08:00
楼主要的就是数字产品签名验证,楼上几位解释的很清楚了。
|
36
DOLLOR 2020-07-07 10:35:28 +08:00
把文档添加到压缩包里,然后打开压缩包,找到文件的 CRC32 值。
|
38
WesleyNZ OP @niubee1 准确来说我的要求其实很简单:
举个例子: 我发个朋友圈: 18321032180381209e8u209u10(假设是 md5 加密结果), 10 年以后我把原文拿出来,别人通过我这个原文,通过 md5 加密,就知道我 10 年前确实说过这句话。 |
40
tsohgdivil 2020-07-07 11:18:00 +08:00 via iPhone
@niubee1 你这说的。。如果哈希算法本身可靠的话,私钥碰撞的概率也不比哈希碰撞的概率低啊
|
41
lzxz1234 2020-07-07 11:21:20 +08:00
你需要的只是一个低佣金的区块链公链
|
42
wangkun025 2020-07-07 11:23:48 +08:00
这个分明是非对称加密。
|
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 并保存好你的私钥即可。 |
45
phy25 2020-07-07 12:23:49 +08:00 via Android
|
46
SingeeKing 2020-07-07 12:27:15 +08:00 via iPhone
Keybase 有工具
|
47
sockpuppet9527 2020-07-07 12:54:16 +08:00
没人吐槽 md5 是消息摘要算法吗?消息摘要和加密是两回事,加密分为对称,非对称。
还有你说 md5 不安全,那是因为有碰撞和字典的存在。 拜托,目前时间攻击(指非量子) RSA2048 位都做不到,而且某些开源的还加入了所谓的抗量子。 但是我就想问一下:谁会闲到没事去破解你的朋友圈? |
48
sunmker 2020-07-07 13:15:20 +08:00
虽然我理解你的意思,但是我想和你说一个知识点,md5 是摘要,不是加密
|
49
beneo 2020-07-07 13:46:36 +08:00
你们还不容约定一本书,然后第几行第几个字,这样。
|
50
tuwulin365 2020-07-07 14:40:14 +08:00
电子签名解决问题
|
52
chinvo 2020-07-07 15:10:28 +08:00
这就是数字签名 (digital signature)
PGP, RSA, ECC 都能提供可靠的数字签名 这个场景, 建议用 PGP |
53
gesse 2020-07-07 15:45:14 +08:00
可以搜索 HMAC,应该是你要找的。
楼主的想法,其实我可以知道很多场景可以使用。 |
55
huawuya 2020-07-07 16:40:11 +08:00
sha256 就足够了,话说楼主这是要当预言帝吗?:)
|