我寻求有关有趣问题的指导。最近我一直在寻找密码替代方案,不是因为安全性,而是为了更加用户友好。
在我的一个项目中,用户收到 128 位base64编码的盐作为安全令牌,可以通过社交网络、信使、短信等安全地传输。当用户决定执行某些操作时,他会输入这个公共盐和秘密密码。现在,这 22 个随机字符的盐对于最终用户来说看起来很不愉快和原始,很难区分一个安全令牌和另一个安全令牌(用户可以有很多),但很容易发送,因为它只是一个字符串。
我的总体想法是:
- 使用 128x128 图像,该图像的每个像素以某种方式与对应的值绑定,
base64参考序列的下一个像素(细节目前不相关),以产生看起来像盐的 QR 码的东西; - 例如,添加 gravatar 作为其顶部的第二层,以使其在视觉上可识别。
我的问题:
- 从可用性的角度来看,这种方法是否合理?我想,发送图像比发送字符串更难。
- 有没有其他方法可以让 salt 看起来更人性化?
四处寻找答案。非常感谢任何帮助。
更新#1
我在Defuse Security上找到了一个示例,它通常反映了我的项目中实施的方案:

作为加密过程的结果,最终用户获得了链接,路径实际上代表 salt - OwkXSVW8R5NTv3jGyAvnjy。这是我想要转换成图像的丑陋的东西,所以它是安全的,但对用户来说仍然很容易区分,所以我的问题仍然相关。
希望这将有助于找出方法。
更新#2
我认为这个问题被误解了。
在我的项目中,用户有常用密码和一些盐,保留在数据库中,但该盐仅用作标识符。所以,盐不是应该保密的东西,一般来说,盐不是秘密。从安德鲁霍夫曼的回答中,除非你有过目不忘的记忆,否则盐是他所拥有的,而密码是他所知道的。
但问题是,salt 不太人性化,看起来很重,一眼看去很难分辨出多个这样的salt。有了这个,我认为可以将盐转化成的盐看起来和感觉都很好。例如,像版本1和版本2 的Google ReCaptcha - 它完成相同的任务,但简单的点击比从图片中输入一些符号更用户友好。
我不想对这个问题感到恼火,但请接受这样一个事实,即我没有发明自己的盐衍生机制或安全系统。