【代码】JS|前端密码,浪漫至死不渝,祝我生日快乐

这篇具有很好参考价值的文章主要介绍了【代码】JS|前端密码,浪漫至死不渝,祝我生日快乐。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天是特别的日子,我想把这篇存稿发出来。

一次缺席,次次缺席,便不再期待重逢。
也是时候,解开最后一个设计过的谜题。


学加密的同时,我恰好写前端比较多,也有朋友找我测试他们前端页面上的加密方案的安全性。当时我就在想:

  1. 前端很适合展示浪漫的心思。前端是一个公开的信息渠道,单纯的前端代码具有较差的隐匿性,但是又具备极其良好的传播性
  2. 加密具备公开又神秘的属性。学到公钥加密的时候我觉得这种手法真的是优美极了:纵使一切信息都能被所有人看到,但只有发送者和接受者知道对方想表达的是什么。

公开的前端,加密的方案,说做就做。

我想到的是隐藏一段话,思维逐渐发散到祝他生日快乐。我不希望文本本身平铺直述地躺在代码里,也不希望同行解密后对我欲盖弥彰的加密嗤之以鼻,所以我希望隐藏的手法多少带一点点巧思。

这是我大二的解决办法:

try{let key=eval(CryptoJS.AES.decrypt("U2FsdGVkX1/sZGG8RDCO08aUuolRteDh0GJRsSIBI4mUGuX9Gd7aPaV9ruxiZ/gFCLStKO9n4P9Y1EH4RELsgQ==", 'trios').toString(CryptoJS.enc.Utf8));
        eval(CryptoJS.AES.decrypt("U2FsdGVkX18903sbV5GwKO1wzwFnS9TRTACh25BIRdHGjFdkq2jd75+JYMyicx/7cgVcY4kwGLGqV6Yo0IaaWA==", key).toString(CryptoJS.enc.Utf8));}catch{;}

两段密文,第一段自带密钥,其实没啥破解难度;巧思是第二段,第二段以第一段的运算结果作为密钥。
我把这个代码嵌入到了我写的脚本中:【MOOC】JS脚本|便于复制粘贴中国大学MOOC网站的测试题和选项。

第一段解出来是:"''+new Date().getMonth()+new Date().getDate();",代表当前的日期。
只有当日期符合我加密的日期时,第二段才会解密成功。

这样就丝滑地做到了“特定时间(即生日)触发”。
这个加密方案灵感来源于公钥加密方案的设计理念。公钥加密之所以能成功,就是因为其中存在一个难解的数学问题,即大整数分解。因此我就在想,在我的设计场景里,“难解的问题”可以是什么呢?我想到了一个点:少有人知道我喜欢的人是什么时候生日。

解密的结果你们自己去解吧,就不贴了。
这两行代码的好处如下:

对于我:

  1. 可以放到任意地方执行。只要是JS代码,引入了CryptoJS就可以执行了。作为纯前端代码,它的隐匿性和传播性都还不错。即使换成其他语言,也就只是换个加密库的事情,方法可以保持不变。

对于他:

  1. 足够简单,以致于他可以解密。一方面因为是前端,所以不管是验证还是解密都不需要额外安装环境,不像Python或者别的啥还得装环境。另一方面我专门嵌入到了脚本中,如果他尝试过安装我的脚本、或者说看过我的博客、或者看过我发的相关的内容,他只需要安装脚本就可以引入CryptoJS库,并在页面上直接做测试了【毕竟我也知道引入CryptoJS库对于一个行外人来说可能挺麻烦的】。
  2. 他来解密,比其他人更加容易。毕竟密钥是他生日,换别人还得爆破一下密钥,虽然密钥空间才366,但是多少也是要爆破一下的。
  3. 他不解密,效果也还是一样的。不管解密与否,反正这个代码会在他生日那天弹出祝他生日快乐的信息。管它弹给谁了,总之它是弹出来了。我已经教过他怎么运行脚本了,基于人类原始的好奇心,他在看了这篇文章后万一某天突然想起,可能会在生日那天运行一下我的脚本,也不枉我的精心设计。

对于同行:

  1. 调用CryptoJS库有一点小门槛。很多人对浏览器脚本只停留在使用的阶段,而CryptoJS库并不是一个控制台能直接运行的常用库,需要引入,因此我的这两行代码直接扔控制台会报错,需要配合脚本管理插件或者自行想办法引入相应的库;
  2. new Date().getMonth()的结果比实际月份少1,比如如果今天是4月,那么返回的值就是3。即使有人试图暴力破解,得出来了密钥是多少,破解的人也很可能会因为不熟悉JS代码而弄错我究竟要几月祝他生日快乐;
  3. AES的加密模式特别多。如果不调用CryptoJS库,试图使用在线解密,由于CryptoJS库默认的AES加密模式是CBC,会自动将密钥拓展为256位,直接使用在线解密去解第一段密钥时,需要先拓展trios这个密钥,否则无法使用在线解密。并且还得查到它的特定的填充模式。
  4. 这两行代码是无害且无意义的。就算猜出密钥了,知道他是什么时候生日了,也对我俩之外的人都没有什么意义;而如果没猜出来这两行代码的作用,它寻常时候也不会执行。
  5. 就算别人完全解密成功了,我的字符串也只包含他的化名昵称。因此除非与我们俩都相熟的朋友,其他人并不知道我在祝福谁,很大程度地保证了他的互联网隐私性。

至此,就形成了:

你知道我一定会私聊祝福你开心。
却不知道我还会向全世界祝福你。

而我向全世界公开的祝福,
仅当你愿意了解我的时候,
才会发现。

这个矛盾又浪漫的闭环。

方案的确拙劣,不过确实是我当初能想到的藏匿一段文本的、最契合我自己的方法了。
要的就是难度不至于大到解不开,但是又永远对他双标

如果让我现在去设计肯定是尽量想办法做到近似一次一密了。【菜鸡碎碎念】

实际上,我当时发布在互联网上的大部分加密加锁的内容,如果他去解锁都会更加简单。
不过幸运又不幸的是,他一个也没发现

不过,这个方案仍然算是我感觉的挺有趣的一个,
公开分享给大家,或许可以有幸被某个路过的写手捉到灵感。文章来源地址https://www.toymoban.com/news/detail-858880.html

到了这里,关于【代码】JS|前端密码,浪漫至死不渝,祝我生日快乐的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python编程 圣诞树教程 (附代码)程序员的浪漫

    作者简介:一名云计算人员、每天分享Python和云计算的学习经验、和学习笔记。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录  前言 一.python 做圣诞树 1.turtle库 2.python函数的定义规则 2.引入库 3.定义画彩灯函数  4.定义画圣诞树的函数  5.定义

    2024年02月03日
    浏览(51)
  • python基础编程:python如何实现浪漫的烟花秀(附代码)

     不废话,直接上代码: 喜欢的关注下。

    2024年02月15日
    浏览(52)
  • C#实现简单的心形表白代码<这是属于程序员的浪漫!>

    C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如

    2024年02月12日
    浏览(44)
  • 视频网页前端禁止截屏代码实现js

    原理是采用商业级DRM实现, DRM 许可证费用目前没有免费服务商 ,腾讯云价格是0.0056元/次。 另外此功能 不兼容安卓 ,安卓系统无法正常播放视频! 可以看到截屏时刻出现黑屏,录屏也能保证全黑状态。 商业级DRM能够实现媒体内容加密保护、防抓包和破解工具破解、防浏览

    2024年02月14日
    浏览(37)
  • 前端项目中使用js-beautify格式化、美化js代码

    很多网站的js,html,css代码做了混淆处理,导致难以阅读,这个时候js-beautify工具就可以派上用场了。github地址:https://github.com/beautify-web/js-beautify 可以在这个网站看转换效果:https://www.1tool.site/#/javascript?id=1 效果如图:

    2024年02月15日
    浏览(48)
  • WEB前端3D变换效果以及如何应用js代码

    变换效果3d 过渡属性 动画 首先JavaScript是一个 动态的解释型 编程语言。 所谓动态就是指,代码在运行时变量的数据类型可以发生变化。(静态就想类似c、java、go这种语言他们需要创建变量时就确定变量的数据类型,并且不可随意更改) 所谓的解释型语言,是指代码运行时

    2024年01月23日
    浏览(44)
  • 前端JS代码中Object类型数据的相关知识

    获取Object类型数据的方式有两种: 方括号获取: Object[\\\"arg1\\\"] 点·获取: Object.arg1 前端遍历Object类型数据的方式 遍历JavaScript中的对象有几种方法,包括使用for…in循环、Object.keys()方法、Object.values()方法和Object.entries()方法。以下是每种方法的示例代码: Object对象中的日期类型

    2024年01月20日
    浏览(58)
  • HTML爱心代码 | 一起体验理工男的极致浪漫(电视剧男主同款)

    大家好,我是陈橘又青,今天中午刷微博,看到最近《点燃我温暖你》中男主角——理工男李峋的爱心代码撩到了无数人,于是把代码开源分享给大家。 遇见你温暖你 李峋爱心代码 因为代码比较简单,就不做过多讲解了,大家需要自取即可, 拿到代码不知道怎么运行 或 想

    2024年01月20日
    浏览(74)
  • 前端又出新轮子Nue.js,但还是低代码更香!

    别TM卷了!!! 自从前后端分离以来,前端前端的车轮滚滚向前,轮子造的越来越圆。每个人都在适应这个轮子的节奏,稍微不注意就会被甩出车轮之外。 调侃归调侃,既然口子已经开了,你只能往前走,这篇文章也是想到什么写什么。毕竟谁都不知道会不会突然间又出了个

    2024年02月05日
    浏览(35)
  • HTML浪漫动态表白代码绚烂星空烟花+粉色大爱心+3D大小魔方旋转相册+音乐(附源码)(三)

    七夕马上就要到了,为了帮助大家高效表白,下面再给大家加几款实用的HTML浪漫表白代码(附源码)+背景音乐,可用于520,情人节,生日,求爱表白等场景,可直接使用。 来吧,展示! 效果是动态的 关键代码修改 修改名字 修改背景音乐,只要把音乐地址修改即可,可与当前

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包