V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ZE3kr
V2EX  ›  分享创造

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

  •  
  •   ZE3kr ·
    ZE3kr · 2016-04-03 23:18:34 +08:00 · 3022 次点击
    这是一个创建于 3149 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    其实就是通过算加盐的 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 较慢速

    image

    SHA-256-short-v1 快速

    image

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

    图片

    image

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

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

    或。。。其他过程和结果有趣工具🔧
    ZE3kr
        4
    ZE3kr  
    OP
       2016-04-04 12:39:49 +08:00 via iPhone
    @delia 提示应该是在分享链接的同时说出来,比如分享到朋友圈的“时候的这一刻的想法”就是可以是提示。没做提示是因为没有必要。建议答案最好是一个字、词或成语、俗语什么的,或者是一些名词。不建议长句(因为同样一个意思可能存在多种不同的表达方式)
    qgy18
        5
    qgy18  
       2016-04-04 18:12:36 +08:00 via iPhone
    nideba321
        6
    nideba321  
       2016-04-06 17:19:09 +08:00
    别有猜到了以后 我能看到谁猜中 谁没猜中吗?
    ZE3kr
        7
    ZE3kr  
    OP
       2016-04-07 09:13:21 +08:00 via iPad
    @nideba321 不能,因为为了保护隐私,没有做任何会上传用户数据的功能。这当然可以做到,但不想做。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2070 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:52 · PVG 08:52 · LAX 16:52 · JFK 19:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.