Sloppy's Blog

IOS自带的md5,sha1

相信很多在做校验的相关功能中,会用到md5,跟sha1的相关字符串校验,IOS中自带此功能,具体代码如下:

#include "CommonCrypto/CommonDigest.h"// 双引号替换成<>
static inline char hexChar(unsigned char c) {
    return c < 10 ? '0' + c : 'a' + c - 10;
}

static inline void hexString(unsigned char *from, char *to, NSUInteger length) {
    for (NSUInteger i = 0; i < length; ++i) {
        unsigned char c = from[i];
        unsigned char cHigh = c >> 4;
        unsigned char cLow = c & 0xf;
        to[2 * i] = hexChar(cHigh);
        to[2 * i + 1] = hexChar(cLow);
    }
    to[2 * length] = '\0';
}

NSString * md5(const char *string) {
    static const NSUInteger LENGTH = 16;
    unsigned char result[LENGTH];
    CC_MD5(string, (CC_LONG)strlen(string), result);

    char hexResult[2 * LENGTH + 1];
    hexString(result, hexResult, LENGTH);

    return [NSString stringWithUTF8String:hexResult];
}

NSLog(@"%@", md5("test"));

NSString * sha1(const char *string) {
    static const NSUInteger LENGTH = 20;
    unsigned char result[LENGTH];
    CC_SHA1(string, (CC_LONG)strlen(string), result);

    char hexResult[2 * LENGTH + 1];
    hexString(result, hexResult, LENGTH);

    return [NSString stringWithUTF8String:hexResult];
}

NSLog(@"%@", sha1("test"));