安全哈希算法(Secure Hash Algorithm)主要適用于數(shù)字簽名標(biāo)準(zhǔn) (Digital Signature Standard DSS)里面定義的數(shù)字簽名算法(Digital Signature Algorithm DSA)矩父。對(duì)于長(zhǎng)度小于2^64位的消息霜医,SHA1會(huì)產(chǎn)生一個(gè)160位的消息摘要三娩。當(dāng)接收到消息的時(shí)候豁护,這個(gè)消息摘要可以用來驗(yàn)證數(shù)據(jù)的完整性。在傳輸?shù)倪^程中吃既,數(shù)據(jù)很可能會(huì)發(fā)生變化知给,那么這時(shí)候就會(huì)產(chǎn)生不同的消息摘要。 SHA1有如下特性:不可以從消息摘要中復(fù)原信息嘿架;兩個(gè)不同的消息不會(huì)產(chǎn)生同樣的消息摘要,(但會(huì)有1x10 ^ 48分之一的機(jī)率出現(xiàn)相同的消息摘要,一般使用時(shí)忽略)。
#import "AlgorithmManager.h"
#import <CommonCrypto/CommonCrypto.h>
@implementation AlgorithmManager
+ (NSString *)signWithSHA1:(NSString *)input{
const char *cStr = [input UTF8String];
unsigned char result[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(cStr, strlen(cStr), result);
NSString *str_SHA1 = [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
result[0], result[1], result[2], result[3], result[4],
result[5], result[6], result[7],
result[8], result[9], result[10], result[11], result[12],
result[13], result[14], result[15],
result[16], result[17], result[18], result[19]
];
return str_SHA1;
}
@end
舉個(gè)栗子:123456
結(jié)果:7c4a8d09ca3762af61e59520943dc26494f8941b
對(duì)照網(wǎng)站:http://tool.oschina.net/encrypt?type=2