Hash 在终端中生成一个咸散列

Hash 在终端中生成一个咸散列,hash,terminal,applescript,osx-mavericks,Hash,Terminal,Applescript,Osx Mavericks,我想制作一个AppleScript,用Terminal生成一个盐渍的散列。是否有一个特定的终端命令可以生成salted散列,最好是像SHA-512这样的安全散列?如果可能的话,我想要一个单行程序,这样我就可以将它与do shell脚本命令一起使用。我在网上搜索了一下,但没有找到在终端中生成咸哈希的方法,只是一个普通的 我正在运行OS X Mavericks 10.9.5。据我所知,至少在概念上,您的要求需要两个步骤: 获取一个随机的盐值 将salt值与输入文本(密码)连接起来,并计算组合值的哈

我想制作一个AppleScript,用Terminal生成一个盐渍的散列。是否有一个特定的终端命令可以生成salted散列,最好是像SHA-512这样的安全散列?如果可能的话,我想要一个单行程序,这样我就可以将它与do shell脚本命令一起使用。我在网上搜索了一下,但没有找到在终端中生成咸哈希的方法,只是一个普通的


我正在运行OS X Mavericks 10.9.5。

据我所知,至少在概念上,您的要求需要两个步骤:

  • 获取一个随机的盐值
  • 将salt值与输入文本(密码)连接起来,并计算组合值的哈希值
为了以后的验证,您必须将盐与结果哈希一起存储

下面的AppleScript处理程序包装了提供必要功能的shell函数——它们前面是示例调用

免责声明:我对这个领域的理解是有限的,所以请对这些函数持保留态度(哈!)

盐的生成函数是从

#要散列的示例文本。
将passwd设置为“somePassword”
#生成包含10个字符的salt值,约等于64位值。
将盐设置为生成盐(10)
#从组合的salt和输入值计算hash。
将hash设置为getSha512(salt和passwd)
#概要
#getSha512(文本)
#描述
#使用SHA-512(SHA-2)算法计算并输出文本的哈希值。
#输出是由小写十六进制数字组成的128个字符的字符串。
#要创建salt散列,请首先使用generateSalt()获取salt,然后
#将其前置到要散列的文本。
#先决条件
#需要sha512sum或shasum实用程序。其中一个应该是
#可在BSD/OSX和Linux系统上使用。
#范例
#将盐设置为生成盐(20)
#将hash设置为getSha512(salt和passwd)
关于getSha512(txt)
执行shell脚本“
getSha512(){
本地-a shaCmd
如果命令-v sha512sum&>/dev/null;那么
shaCmd=(sha512sum)
elif命令-v shasum&>/dev/null;然后
shaCmd=(shasum-a512)
其他的
{echo'错误:找不到SHA-512生成实用程序。'>&2;返回1;}
fi
#调用SHA生成命令并输出第一个空格分隔的字段。
#(后续字段指示模式和输入文件名。)

\“${shaCmd[@]}\”这也行吗?
将密码设置为“123456”
将salt设置为10000000到9999999之间的随机数(这是salt)
将passAndSalt设置为passCode和salt
执行shell脚本“echo”和passAndSalt”| shasum-a 512 |“awk{print$1}”
这会行得通的(除了输入错误:最后一个命令应该是
do shell脚本“echo”&passAndSalt&“| shasum-a 512 | awk'{print$1}'”
),但请注意,您的salt限制为9000万个可能性,即小于27位的随机性,而建议的最小值为64位。我的函数为每个字节提供更多的随机性,并且不受AppleScript实数可以容纳的范围的限制。因此,使用相同的字节数(8),我的函数提供的位数大约是我的两倍,使用10个字节将提供超过64位,如我的示例中所示。现在测试它,您的脚本工作得很好!但它确实很复杂。我只是想问我的想法是否也可行。您的意思是调试?最简单但破坏性的方法是在脚本编辑器,如果您使日志可见(
View>Show log
),则可以使用
log salt
,并在下方窗格中查看结果;有关更多信息,请参阅。我知道了。感谢您的帮助:D@GeorgeNetu:要在OSX上获得SHA-512编码,从openssl v0.9.8开始,必须使用
openssl dgst-sha512
openssl sha512
仅适用于更高版本,如Ubuntu 14.04上的v1.0.1f)。也就是说,您必须使用带有SHA算法的
dgst
命令。
openssl
对生成盐没有帮助。