iOS下使用md5码(转)

因为密码不能明文传送,一般都会使用md5码来给服务器发送密码,如果是动态密码,客户端与服务器端会效对时间,然后客户端与服务器端使用相同的与时间相关的随机数种子和一个固定的编码,再加一些设备信息,进行md5计算或者其他hash计算方法就可以得到一个动态的数据加密密码。所有客户端与服务器端的数据都通过这个动态密码来加密。这样可以使用客户端与服务器端之间的数据就会很安全。
一般的密码都有公钥和私钥之分,这是利用了素数只能被自已和1整除的性质。所以,一般情况下可以使用两个大素数的乘积来作为密码种子,当我们设置密码时,会有套固定的算法来为我们的密码生成一个公钥和一个私钥。私钥就是这两个大素数的乘积。大素数分解因式是一个非常耗时的工作,现在又没有什么更好的办法来对大素数分解因式,所能使用的方法只能是一个一个数试。根据目前所知道的情况,素数的数量是无限的,可以无限大。

#import <CommonCrypto/CommonDigest.h>


//md5 32位 加密 (大写)
+ (NSString *)md5:(NSString *)str {
    const char *cStr = [str UTF8String];
    unsigned char result[32];
    CC_MD5( cStr, strlen(cStr), result );
    return [NSString stringWithFormat:
            @"xxxxxxxxxxxxxxxx",
            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],
            result[20], result[21],result[22], result[23],
            result[24], result[25],result[26], result[27],
            result[28], result[29],result[30], result[31]];
}
//md5 16位加密 (大写)
-(NSString *)md5:(NSString *)str {
    constchar *cStr = [str UTF8String];
    unsignedchar result[16];
    CC_MD5( cStr, strlen(cStr), result );
    return [NSStringstringWithFormat:
            @"%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]
            ]; 
}

NSString字符串的大小写切换使用下边的方法,所以得到的md5不论是大写还是小写问题都不大。
1)lowercaseString:将改变成小写的字符串
2)uppercaseString:字符串将改为大写



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值