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

网页版时间锁,一定时间后才能解密消息

  •  
  •   iqoo · 240 天前 · 3852 次点击
    这是一个创建于 240 天前的主题,其中的信息可能已经有所发展或是发生改变。

    拿几年前的弱口令强化 Demo 修改了下,做了个在线版的时间锁,可以让接收者必须经过一定时间才能看见消息。

    演示: https://etherdream.github.io/timelock/

    (备用地址: https://etherdream.com/timelock.html

    界面有点简陋,未适配移动端~ 有 BUG 或建议可以反馈。

    测试 1:

    https://etherdream.github.io/timelock/#iter=10&key=0xC7E071A0F35D5677&cipher=0x7667ADF22C7FA346A2E13307611073FFF7011C903E01DA50925791

    点击“解密”按钮开始解密,单核性能越高,解密越快。建议使用 Chrome 浏览器。

    我的电脑上大约 10 秒能解开( MacBookPro M1 ),内容为 “Hello World”。

    测试 2:

    https://etherdream.github.io/timelock/#iter=120&key=0x5231217743B22301&cipher=0x34965EF12FC6A9E76EE7C9242D72D74E0FF4C67757732399760D4C9EF71896A2C61374A30441A59E22CA9BBE4EB7

    大约 120 秒能解开,内容为 “支付宝口令红包 ********”。( 100 个,2024-04-02 过期。没 BUG 的话之后发一个只能 1 人领取但解密时间更长的,看谁的 CPU 主频最高)

    有什么可以改进或好玩的,可以想象下~

    第 1 条附言  ·  170 天前
    由于算法已改变,上述演示链接已失效。
    23 条回复    2024-04-02 21:21:12 +08:00
    CivAx
        1
    CivAx  
       240 天前
    Cool ,领到了第 6 个
    ztmzzz
        2
    ztmzzz  
       240 天前 via iPhone
    ios chrome 能正常用,花了 3 分钟解密
    xiaoen
        3
    xiaoen  
       240 天前
    领到了红包
    tool2d
        4
    tool2d  
       240 天前
    收到大大的红包,感恩 OP !

    我上次也写了一个前端大计算量的 JS 代码,结果 chrome 直接失去响应。。
    LeslieLeung
        5
    LeslieLeung  
       240 天前
    领到了第 12 个,好有趣的 demo !这周的周刊又有材料了。

    能不能作为一种反制脚本黄牛的抢购限制手段?必须提早打开页面挂着(购买意愿)并且消耗性能(投入成本)。(不过开虚拟机,每个分配一个核就能解决,只是提高了成本)
    lzgshsj
        6
    lzgshsj  
       240 天前
    有点意思
    jurassic2long
        7
    jurassic2long  
       240 天前
    公司的 i5-6500,耗时 14 分钟。。。领到第 45 个
    ififi
        8
    ififi  
       240 天前
    领到了第 51 个。谢谢 OP !
    googlefans
        9
    googlefans  
       240 天前
    以前看到过很多类似的:
    https://www.pastery.net/
    https://controlc.com/
    alexsz
        10
    alexsz  
       240 天前
    谢谢张真人😁
    R31
        11
    R31  
       240 天前
    61 个 感谢
    BluePadge
        12
    BluePadge  
       240 天前
    领到了第 63 个。有一个粗浅的想法:靠加密可以做一个“意外死亡在线遗书”,发布者需要定期延后解密时间,一段时间未更新的话,就把内容作为遗书发送到指定邮箱去。
    LXchienne
        13
    LXchienne  
       240 天前
    领到了,只是加密时间太长了,想法很不错
    polaris1815
        14
    polaris1815  
       240 天前
    buyerhou
        15
    buyerhou  
       240 天前
    perfect
    guqikang
        16
    guqikang  
       240 天前
    领到了,谢谢
    KorenKrita
        17
    KorenKrita  
       240 天前
    提两个建议
    看起来难度是只能为正整数 但是前端页面没限制只能输入正整数 试了几个小数是可以运行的但是会在整数部分结束后就出结果了
    对于加密来说应该加密后给出完整的分享链接(最好还能自动复制到剪贴板) 而不是让用户自己拼 要是没有你的这俩测试链接我都不知道怎么拼
    tool2d
        18
    tool2d  
       239 天前
    @BluePadge 现在加密时间和解密差不多。你如果要延后一年解密,估计要先算半年加密。
    iqoo
        19
    iqoo  
    OP
       239 天前   ❤️ 1
    @tool2d 不考虑网页版的话是可以快速加密的,demo 里的论文中有详细讲解。

    之前有个新闻 https://www.linkresearcher.com/information/6c3da22d-11fa-45d3-a18c-0c3b28835dd5 也讲解过
    hawken
        20
    hawken  
       239 天前
    “来晚了,红包已领完” 怎么看时间啊,手动计算吗
    iqoo
        21
    iqoo  
    OP
       239 天前
    @KorenKrita
    复制链接功能已加上

    难度值的本质是调用 pbkdf2 函数的次数,无法分割成小数。当然,倒是可以根据小数部分设置每次传入 pbkdf2 中的迭代参数,目前该参数是固定 1e7 ,在我笔记本电脑上大约耗时 1s 。如果要考虑低性能的 CPU ,倒是可以考虑这个方案。
    dbit
        22
    dbit  
       239 天前 via iPhone
    感觉 iPhone15 一分半就解开了? 尽管没领到红包
    rekulas
        23
    rekulas  
       238 天前
    这个问题我以前也有研究过,因为想做一个区块链上的密码包,目前来说要想真正设置一个时间胶囊只能靠算力限制(挖矿- _ -), 要想快速生成就要降低整个链条的相关性, 但要想防并发破解又要提高相关性(串行解密), 所以找到一个合适的平衡点很重要, 能不能找到一个又快又防爆破的算法,目前来看很难(可能以后量子领域有更好的办法吧), 另外还存在一个问题就是预测遥远未来的算力增长趋势误差太大,容易导致密码被过早(例如帖子中的那样)或过晚解密出来
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5052 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:48 · PVG 17:48 · LAX 01:48 · JFK 04:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.