【问题标题】:Convert a hash string to a password like string [closed]将哈希字符串转换为类似字符串的密码 [关闭]
【发布时间】:2017-03-28 19:02:23
【问题描述】:

我有一个使用 SHA1 的散列字符串。我想将此字符串转换为类似密码的字符串,这意味着大约 8 个字符,包括大写、小写和特殊字符。

【问题讨论】:

  • SHA-1 哈希函数的输出大小为 160 位。 8 个字符的密码的熵介于 48 和 64 位之间。您打算如何将哈希减少为“密码”?你为什么要这样做?这应该是可逆的吗?有必要了解您想要实现的目标和原因,以便提供某种帮助
  • Base64 编码前 6 个 SHA1 字节。但是,根据您的使用情况,这可能非常不安全。
  • 我投票结束这个问题,因为它是关于安全/编码的,最好在 security.SE 网站上询问。
  • 这不应该是可逆的

标签: cryptography passwords password-encryption


【解决方案1】:

您可以使用base-85 将哈希的最后 8 个字节编码为 10 个 ASCII 字符。

您应该知道,如果最初被散列的字符序列是可预测的(例如,它是一个单词或短语,或者是一个常用的密码),那么从 10 个字符的字符串中将很容易猜到。即使原始字符串是随机生成的,找到另一个产生相同截断哈希的字符串也相对容易。

换句话说,这种技术不能用于任何需要安全的事情。

【讨论】:

  • 如果人类要输入结果,Base58 是更好的解决方案,省略以下看起来相似的字母:0(零)、O(大写 o)、I(大写 i)和l(小写 L)以及非字母数字字符 +(加号)和 /(斜杠)。 Base85 对一般计算机用户来说有更多令人困惑的字符,例如 .、-、:、+、=、^、!、/、*、?、&、、(、)、[、]、{、} , @, %, $, #.
  • "意思是大约 8 个字符,包括大写、小写、和特殊字符。"
  • 快速,“Il”,是大写的 i 和小写的 L? Base85 不是供人进入的,Base58 是而且是。但话又说回来,也许 OP 不会使用这些字符进行人工输入。
  • 没错。 OP 没有给出任何理由来假设有关安全性或用户交互的任何事情。我们所拥有的只是对特殊字符的明确要求,以及随之而来的缺点。
猜你喜欢
  • 2018-03-25
  • 2016-10-21
  • 1970-01-01
  • 2019-08-26
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多