「言说」2023 年仍然在纠结密码问题什么的

吐槽/反馈/建议:我的咸鱼心  爱发电-@wdssmq

前言

一直以来有一个纠结,正好在临开写前想到了如何概述这个纠结,那就是 ——

「实名过的小号还算不算小号这件事.jpg」

过于安全的「安全问题」

中文翻译成「密保问题」可能更准确些,当年 QQ 也确实是这么叫的,后来慢慢以手机验证替代了,出过一个自己的 TOTP 验证工具,目测也已经被放弃了。

然后去年新买了台路由,就比较不理解也是要设置密保问题,按复位键后要回答问题才能实现重置,只能说大概率不会真的忘记登录密码。。吧。。

再然后是 Yandex 邮箱,没绑定手机,但是绑定了另一个邮箱,密保问题是「«Your favorite childhood book»」,答案是什么来着???

用一个兼具「语义属性」但仍然以「正确性」为主的文本内容,去保护另一个姑且只需要正确性的密码,这种设计就真的非常非常非常奇怪吧。。

「语义」让其有了「不需要特别去记」的迷惑性,「正确性」又实质上相当于把密码加长了一部分,浏览器还没办法自动帮我记忆……

就,,太安全了,,,安全到我自己都通不过验证。。

话说最近给 github 设置两步验证时有给一个恢复码的文件,其实还有一份谷歌的备用验证码是 2017 年生成的,文件一直还在,虽然 10 组密码只用了 1 组,,这些文件被弄丢的概率还是要比忘记「密保问题的答案」还是要低的。。

关于密码本身

密码本身可以借助工具自动记忆,另一方面大部分也都可以通过「找回密码」来重置,然而感觉很多用户包括我并不能在「忘记的后果」上和密保问题相区分,将同样的心态代入到了设置密保的步骤,也是密保问题不够科学的一个原因。

然后是密码文本的构成,其实,不考虑手动输入的话,随机生成是最安全的,然而现实并不理想……

花密 FlowerPassword」 ← 2011-2023,原来这东西已经这么久了么。。。

花密使用「记忆密码」 + 「区分代号」计算生成密码,然而我没使用它的一个原因是,企鹅的账号我该用 Tencent 还是 QQ 作为区分代号???

这是很认真的在纠结……然后刚才发现区分代代码还是分大小写的,,更纠结了。。 - -||

最后,生成后再复制使用仍然是不方便……

我自己的密码方案

最早试过直接在密码最后用 QQ GG FF 这种后缀,后来试过年月汉字的五笔编码,然而一到十对应的首字母只有 8 个,就想到像 TOTP 那样用时间周期来生成,周期以天为基础单位,输出长度开始是 3 位,后来改成了 4 位,作为后缀附加到固定密码后面。

最早也不是用自动生成的时间周期,而是 win10 官方标题里提取,202X 年 XX 月更新这种;「- 现在改成了 22H2 的格式 -」

虽然结果就是在同一周期内设置或重置的密码会变成一样的…… - -||

回到开头的那个纠结上,一些小号使用的密码,其固定组成的部分中的数字部分会用一串比较好输入的构成,正式的则用另一串……

所以「实名过的小号」我该用哪边的密码??? - -||

所以代码呢

Web 版:

GenCode - 一个特殊的 TOTP 生成工具 - 我的网站:

https://demo.wdssmq.com/tools/GenCode/

↑ 用了小程序的代码重写过的,然后,并没有用 taro 直接生成网页版,样式啥的都要调整;

小程序,用的 taro:

taro-prime-ts · 沉冰浮水/水水的旧代码合集 - 码云 - 开源中国:

https://gitee.com/wdssmq/StaleCode/tree/master/taro-prime-ts

↑ 好像这个才是第一个用 ts 的项目,前几天开新坑时给并没有想起来,,还以为那边才是第一次.jpg

↑ 需要加个 README.md 贴个小程序码,以及是不是把核心部分再抽离个 lib 出来,,然后实际上架的微信小程序也用的原生写法 - -||

关于「算法」

好像有条「不要自己发明加密算法」的古训来着,,可是只输出 4 位的话用复杂的加密又感觉很浪费。。

上边实现用的代码是自己糊的,感觉最大的问题是自己会想要修改……

姑且也用 AI 生成了下,,以下是用的咒语和大概看起来不错的结果,虽然实际运行后感觉不太行。。

不用复杂的加密实现一个基于时间的 hash 算法,密钥只有数字,时间周期为 n 天,同一周期内输出相同的结果,只有基本的加减剩除、进制转换以及 charCodeAt,输出为 4 位纯字母,A-Z 都有可能出现


好的,我可以为您提供一个简单的基于时间的哈希算法。以下是算法的步骤:

1.获取当前时间并将其转换为自 1970-01-01 以来的秒数。

2.将密钥转换为数字,并将它们相加。

3.将第一步中得到的秒数除以 n 天的秒数(即 24 小时 60 分钟 60 秒 * n)并取整数部分。

4.将第二步中得到的数字加上第三步中得到的整数。

5.将结果转换为 26 进制,然后将每个数字与'A'相加,获得相应的字母。

6.将这四个字母连接起来,得到最终结果。

以下是实现该算法的 JavaScript 代码片段:

function getTimeBasedHash(key, n) {
  const now = Math.round(Date.now() / 1000);
  const keyNum = parseInt(key);
  const daySeconds = 24 * 60 * 60 * n;
  let hashNum = Math.floor(now / daySeconds) + keyNum;
  let hashStr = "";
  while (hashNum > 0) {
    const remainder = hashNum % 26;
    const charCode = remainder + 65;
    hashStr = String.fromCharCode(charCode) + hashStr;
    hashNum = Math.floor(hashNum / 26);
  }
  return hashStr.padStart(4, "A");
}

请注意,此函数需要两个参数:密钥和时间周期(以天为单位)。它将返回一个由四个大写字母组成的字符串作为哈希结果。同一时间周期内,相同的密钥将始终生成相同的哈希值。


大概是以上内容的总结

1、日常使用两组密码,其中一组中的数字部分相对比较简单,给一些小号使用,然而「实名过的小号还算不算小号.jpg」,该用哪组密码呢?

2、吐槽了使用「密保问题」来重置密码的方案,太安全了,我自己都过不了;

3、对于密码本身,不需要考虑手动输入时,「随机生成 + 密码管理器」就好;

4、上一条终究不那么理想,所以我的选择是,在固定密码组成的基础上,额外附加几位随时间周期变化的后缀,多输几次总会记住,在那之前可以重新生成;

5、所以如何「选定」一个生成算法呢?虽然目前自己糊了个。。「不要自己发明算法.jpg」

其他

话说 QQ 的手机版「QQ 安全中心」已经实质性下线了?

各种验证都基本上只有手机号或扫码了,那个动态口令已经很久没用过了……

然后,登录历史只到「2022-06-16」,今天是「2023-03-28」……

「已经连续守护您 1035 天.jpg」。。。要不要卸载掉。。。


爱发电

本文标题:《「言说」2023 年仍然在纠结密码问题什么的》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20230102708.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

搜索

本周旧文

wdssmq/blog-astro: 一个基于 Astro 的静态博客;

本质上,面临一个代码问题时,我们需要的是另一个人愿意为「你」的问题投入精力,并且有相应的技术知识。。

接上一条,Resilio Sync 换 Syncthing 感觉也是略大的工程。。Orz

去年 GoodSync 送了一年授权,然后也确实用上了;本来想着到期就换 Syncthing,结果前几天临期提醒,花 ¥381 续了三年 Orz,两者定位和使用姿势还是有些差别的。。更早是用 Resilio Sync 和 BCompare,但是前者内存占用太高,后者并不是自动同步的定位。。

2024 年了,姑且备份下嘟特存档。。

……,一个不知名的小众样式库 + 内联样式混写这种入坑姿势确实很有槽点,但是,「已经开始学」并且能够持续是绝对值得肯定的。。

在贴吧看过很多提问了,就有种错觉:好多人为了提一个问题专门注册了贴吧,问题本身可能得到有效回答,也可能没有(和提问的点及具体姿势有关。。但无论如何,之后就和注销了账号一样没有然后了,好像之后永远不用学相应的东西一样。。

《恶魔娃娃》

- 他们正研究你究竟是真正的大人,还是伪装成大人的小孩

- 我自己都研究很久了

乐高 DC 里,(基本就蝙蝠侠家,,年龄最小的那个无论是谁感觉人设都会变得一样 - -

所以,就感觉和祥林嫂一样,每天都需要向外「签到」自己的情绪感受,然而又并没有什么「需要」我这样的签到……

爱发电支持者

最新留言

友情链接

  • 订阅本站的 RSS 2.0 新闻聚合
召唤伊斯特瓦尔