最近本人新开发了一个网页软件,中文名叫 “猜猜我说了什么”。它允许你输入一段话,等待完成计算后,分享当前页面给别人,别人就可以猜你刚才输入的内容。别人只能知道是才对还是猜错,没有介于两者之间的提示。你所说的内容不会被传输,非常安全,因为它只会在你自己的浏览器中生成。
其实就是通过算加盐的 Hash 的方式,最后把盐和 Hash 都放在 URL 里,然后分享当前页给别人,别人就能猜了。
这个软件使用了 Web Cryptography API,可以看出,现在在大多浏览器里都支持了。我使用它生成一个 Key ,然后把这个 Key 作为 Salt 对用户所输入的文本进行 SHA-256 的计算,这个计算是重复很多次的,若使用 SHA-256-short-v4 这个算法,就意味着是重复计算 65536 次,这在 Mac 上的 Safari 上通常不到 5 秒就能完成计算。当将其分享出去让别人猜时,别人每猜一次,就要经历一遍相同方式的计算。所以暴力破解几乎是不可能的。为了适应移动端以及其他低端设备,还有 v0 ~ v5 不同的算法,重复计算次数为 16 的 N 次方,比如 v3 就是计算 4096 次。 short 的意思代表完成计算后会将算出的 Hash 截取,这样可以让 URL 更加简短。
本人没学过加密,于是就自己创了这种方法。这种重复计算应该还是有点效果的,至于有多少,我不清楚。之后直接换 PBKDF2 算法应该会好一些吧。
谈一谈自己所想到的用处
选择一个你喜欢的速度即可:
如果在微信里使用,扫码即可。建议使用 v1 或 v2 ,因为移动设备比较慢,而且通常不会用 GPU 算 Hash 。
SHA-256-short-v2 较慢速
SHA-256-short-v1 快速
GitHub 上有源码,使用了 JQuery 和 text-encoding ,网页全静态。
图片
1
Strikeactor 2016-04-03 23:28:42 +08:00
|
2
ZE3kr OP @Strikeactor 谢谢,这个我是了解的。组合哈希还说很多人在用的,而且哈希的算法是 SHA-256 ,目前还算安全,所以我也这样用了。到时候会直接用标准的慢哈希的支持。
|
3
delia 2016-04-04 09:52:43 +08:00 via iPad
如果一直猜不中,那意义在哪 ?
考虑是否增加提示线索,如计时,可获取提示 1 , 2 , 3 , 4 , 5 或。。。其他过程和结果有趣工具🔧 |
4
ZE3kr OP @delia 提示应该是在分享链接的同时说出来,比如分享到朋友圈的“时候的这一刻的想法”就是可以是提示。没做提示是因为没有必要。建议答案最好是一个字、词或成语、俗语什么的,或者是一些名词。不建议长句(因为同样一个意思可能存在多种不同的表达方式)
|
5
qgy18 2016-04-04 18:12:36 +08:00 via iPhone
|
6
nideba321 2016-04-06 17:19:09 +08:00
别有猜到了以后 我能看到谁猜中 谁没猜中吗?
|