crypt(text,"k7")
Run Code Online (Sandbox Code Playgroud)
我查了一下,显然'k7'是盐,但我不知道这意味着什么类型的输出将来自那个,谁都知道?
Ada*_*tan 12
来自crypt Man页面.
描述
crypt()是密码加密函数.它基于数据加密标准算法,其中包含(以及其他内容)的变体,以阻止使用密钥搜索的硬件实现.
key是用户输入的密码.
salt是从集合[a-zA-Z0-9./]中选择的双字符串.该字符串用于以4096种不同方式之一扰乱算法.
Chr*_*uin 11
所有其他答案都是正确的,但到目前为止还没有人解释为什么盐存在.
维基百科有一个关于盐和彩虹表的好页面,这是我们有盐的主要原因.
如果没有salt,crypt基本上只是一种单向散列函数.它将获取密码并返回该密码的哈希版本.Rainbow表提供了一种优化方法,用于消除此哈希的"单向"特性,并退出原始密码.
如果您设法获得散列密码(通过某些数据库利用或访问/etc/passwd或/etc/shadow文件),理论上您可以知道很多人的密码.
盐为混合物添加了额外的"随机"因子.您需要创建一个随机盐并存储在某处(密码正常,但单独更好).现在一组彩虹表是不够的,你突然需要65,536套这样的表(在两字节盐的情况下).盐也可以与密码分开,增加额外的障碍.
Salt还有助于防止使用相同密码的用户拥有相同的密码; 盐通常是随机选择的,如果盐不同,则散列密码将大不相同.
我还会指出这篇博客文章,解释一些密码基础知识,我发现这些信息非常丰富.