【发布时间】:2022-01-24 18:30:51
【问题描述】:
我正在寻找一种散列算法或加密方法(我不想使用单独的密钥)将字符串转换为字母、数字和特殊字符的“随机”混乱。
我正在尝试创建一个无状态密码“manager”,其中将域和主密码组合转换为(当前)一个 SHA256 字符串,我现在正尝试将其转换为包含特殊字符的字符串,因为有些网站有这个要求。
【问题讨论】:
-
散列和加密算法不输出字符串——它们对字节进行操作,它们的输出也是字节。当它们需要以人类可读的形式显示时,这些字节通常会转换为十六进制字符串表示,但这不是唯一的方法。你可以对这些字节做任何你想做的事情,将它们转换成 ASCII 或 Unicode 字符的其他子集。
-
嗯,目前我刚刚对字符串进行了哈希处理(使用 Rust 的 SHA2 crate,所以我得到
6891d8d8570b5b4等等,我不知道有什么方法可以打印那些涉及特殊字符的字节,也许我将不得不挖掘更多 -
如果您查看这些 crate 中组件使用的方法,您会发现它们仅使用字节,并且您的代码没有直接传递字符串或接收字符串输出。例如,您可能用来生成散列的
update()方法需要一个字节数组([u8])。finalize()方法也返回一个字节数组。 -
谢谢,我会使用这些信息。 :)
-
这种“密码管理”风格似乎是个坏主意。您不会找到一种方法来生成满足每个网站任意规则的密码,因为这些规则很可能直接相互矛盾(例如,一些网站需要特殊字符,而另一些则不允许)。此外,您无法仅更改一个站点的密码,这在安全漏洞后是必需的。
标签: encryption rust passwords