「言说」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
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

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

相关文章

发表评论:

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

网站分类

  • 订阅本站的 RSS 2.0 新闻聚合

搜索

本周旧文

nuc 四个口插硬盘都识别不到,有亮灯。。最后试出别插到底。。

绿联的硬盘盒。。另外一个联想的没问题。。

近期观影记录:超级马里奥,死侍与金刚狼。。

搬家也告一段落,虽然搬过来的东西还得归置,新衣柜虽说已经散俩月味儿了,但还是不想放衣服进去。

要不我每年汇总整理一次??碎雨集_沉冰浮水_第1页

所以,不带这条的话,2024 年目前只发了 13 条嘟????

VSCode 内 git 操作卡住的时候没办法主动取消一直是个痛点,一般都是推送或拉取,今天连提交都卡了。。

又一个夏天过去了,所以今年也没买防水鞋套;然后天凉了,为了应对踢被子买了睡袋,不知道 1.2 米会不会略窄。。

《五至七时的克莱奥》,2018 年 6 月加入列表,21 年 11 月底发现 B 站上线了这部,直到前几天才看完,还是分两次看的。。接下来有五项是 2019 年的,都是电影 —— 略长的待办列表。。

有用程序自动抓取自己带 tag 的嘟,然后按年备份后从线上删除;刚发现去年的数据有备份但是没删线上??和本地数据对比后发现线上的还少一条,Why??

本质上,每个人需要的是「让自己面临的问题得到解决」的能力。。

这又涉及到直接能力和间接能力,,缺乏直接能力很正常,视情况可以通过学习来掌握直接能力,或者「请」有直接能力的人来帮自己解决。。

缺乏间接能力的情况是真没救,尤其是对「这是**我自己**面临的问题」这一前提没有明确认知的人。。

爱发电支持者

最新留言

友情链接