SHA:Secure Hash Algorithm
安全散列算法
与MD5算法极为相似。
长度不超过2^64位的字符串或二进制流,经过SHA-1编码后,生成一个160位的二进制串。
SHA-1算法也与MD5类似,都是把输入二进制串分成512位的块,把二进制串的位数存储在最后64位,二者之间填充为0,依次对每个块进行一些列高深的数学运算,最后得到一个160位的二进制串。
通常表示为40个十六进制数字。
例:
SHA-1("")=da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA-1("hello world!")=430ce34d020724ed75a196dfc2ad67c77772d169
SHA算法也是不可逆的。
从SHA-1的算法可以简单看出,SHA-1安全性比MD5稍高(160位VS128位),但算法需要时间SHA-1稍慢。
在Java中可以简单地通过引用commons-codec来取得sha-1。
import org.apache.commons.codec.digest.DigestUtils;
public class SHA1Test {
public static void main(String[] args) {
String sha1 = DigestUtils.sha1Hex("");
System.out.println(": " + sha1);
sha1 = DigestUtils.sha1Hex("hello world!");
System.out.println("hello world!: " + sha1);
}
}
参考: http://zh.wikipedia.org/wiki/SHA%E5%AE%B6%E6%97%8F