MD5加密和哈希算法

MD5加密算法为如今应用最普遍的哈希算法之一,该算法普遍应用于互联网网站的用户文件加密,能够将用户暗码加密为128位的长整数。数据库并不明文存储用户暗码,而是在用户登录时将输入暗码字符串举行MD5加密,与数据库中所存储的MD5值婚配,从而下降暗码数据库被偷取后用户丧失的风险。

Md5加密算法道理

MD5加密算法以512位分组来处置惩罚输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处置惩罚后,算法的输出由四个32位分组构成,将这四个32位分组级联后将天生一个128位散列值。

在MD5加密算法中,起首需要对信息举行添补,使其字节长度对512求余数的效果即是448。因而,信息的字节长度(Bits Length)将被扩大至N512+448,即N64+56个字节(Bytes),N为一个正整数。

- (NSString *)md5String{
    //先转为UTF_8编码的字符串
    const char* str = [self UTF8String];
    //设置一个接收字符数组
    //md5加密后是128bit, 16 字节 * 8位/字节 = 128 位
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    /*
     extern unsigned char *CC_MD5(const void *data, CC_LONG len, unsigned char *md)官方封装好的加密要领
     
     把str字符串转换成了32位的16进制数列(这个历程不可逆转) 存储到了result这个空间中
     */
    CC_MD5(str, strlen(str), result);
    
    NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH* 2];
    /*
     x示意十六进制,%02X  意义是不足两位将用0补齐,假如过剩两位则不影响
     NSLog("%02X", 0x888);  //888
     NSLog("%02X", 0x4); //04
     */
    //将16字节的16进制转成32字节的16进制字符串
    for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
        [ret appendFormat:@"%02x",result[i]];
    }
    return ret;
}

MD5加密算法因为其具有较好的安全性,加上贸易也能够免费应用该算法,因而该加密算法被普遍应用,md5加密算法重要应用在数字签名、文件完整性考证以及口令加密等方面。

md5加密算法c语言版 md5加密算法c语言版

2.SHA算法

- (NSString *)sha1:(NSString *)str
{
    const char *cstr = [str UTF8String];
    //应用对应的CC_SHA1,CC_SHA256,CC_SHA384,CC_SHA512的长度分别是20,32,48,64
    unsigned char digest[CC_SHA1_DIGEST_LENGTH];
    //应用对应的CC_SHA256,CC_SHA384,CC_SHA512
    CC_SHA1(cstr,  strlen(cstr), digest);
    NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
        [result appendFormat:@"%02x", digest[i]];
    }
    return result;
}

整顿经常使用加密 iOS 与 Android 加密 MD5-SHA1

    原文作者:NeverSayNever
    原文地址: https://segmentfault.com/a/1190000004179983
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞