新开发的网页软件:“猜猜我说了什么”

2016-04-03 23:18:34 +08:00
 ZE3kr

最近本人新开发了一个网页软件,中文名叫 “猜猜我说了什么”。它允许你输入一段话,等待完成计算后,分享当前页面给别人,别人就可以猜你刚才输入的内容。别人只能知道是才对还是猜错,没有介于两者之间的提示。你所说的内容不会被传输,非常安全,因为它只会在你自己的浏览器中生成。

其实就是通过算加盐的 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 算法应该会好一些吧。

这有什么用?

谈一谈自己所想到的用处

  1. 可以用来告诉别人你不想告诉它们的事。比如别人问你一个问题,你不想正面回答,想让它自己猜,那么这是最合适的选择(选择 v0 ~ v5 不同的算法,可以缩短或延长对方每猜一次所用需要时间)。对方猜出来了,那他就知道了,否则这永远是一个谜。
  2. 用来娱乐,比如发在微博里或者微信朋友圈中,让大家一起来猜,一定很有意思。如果有大微发那就更好玩了,全民一起猜(但估计很难知道谁是第一个猜出来的)。

使用

选择一个你喜欢的速度即可:

如果在微信里使用,扫码即可。建议使用 v1 或 v2 ,因为移动设备比较慢,而且通常不会用 GPU 算 Hash 。

SHA-256-short-v2 较慢速

SHA-256-short-v1 快速

GitHub 上有源码,使用了 JQuery 和 text-encoding ,网页全静态。

图片

2997 次点击
所在节点    分享创造
7 条回复
Strikeactor
2016-04-03 23:28:42 +08:00
ZE3kr
2016-04-03 23:34:14 +08:00
@Strikeactor 谢谢,这个我是了解的。组合哈希还说很多人在用的,而且哈希的算法是 SHA-256 ,目前还算安全,所以我也这样用了。到时候会直接用标准的慢哈希的支持。
delia
2016-04-04 09:52:43 +08:00
如果一直猜不中,那意义在哪 ?

考虑是否增加提示线索,如计时,可获取提示 1 , 2 , 3 , 4 , 5

或。。。其他过程和结果有趣工具🔧
ZE3kr
2016-04-04 12:39:49 +08:00
@delia 提示应该是在分享链接的同时说出来,比如分享到朋友圈的“时候的这一刻的想法”就是可以是提示。没做提示是因为没有必要。建议答案最好是一个字、词或成语、俗语什么的,或者是一些名词。不建议长句(因为同样一个意思可能存在多种不同的表达方式)
qgy18
2016-04-04 18:12:36 +08:00
nideba321
2016-04-06 17:19:09 +08:00
别有猜到了以后 我能看到谁猜中 谁没猜中吗?
ZE3kr
2016-04-07 09:13:21 +08:00
@nideba321 不能,因为为了保护隐私,没有做任何会上传用户数据的功能。这当然可以做到,但不想做。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/268381

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX