算法

MD5

MD5:首先,md5不是加密。md5是摘要算法,主要是用来做认证,利用自身优势(不可逆、低碰撞率)解决公开网络中交换密钥、认证的问题,多用于签名识别。

iOS上的MD5使用:

MD5的实现 :首先需要包含头文件:

#import <CommonCrypto/CommonDigest.h> 

可以自定义NSSrtring + Catgory 实现

+ (NSString *)md5:(NSString *)string;

    /**
     *  MD5加密
     *
     *  @param string 需要加密的字符串
     *
     *  @return 返回加密后的结果
     */
+ (NSString *)md5:(NSString *)string{
    // OC 字符串转换位C字符串
    const char *cStr = [string UTF8String];
    // 16位加密
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    // 1: 需要加密的C字符串
    // 2: 加密的字符串的长度
    // 3: 加密长度
    CC_MD5(cStr, (CC_LONG)strlen(cStr), digest);

    NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; // 32位
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [result appendFormat:@"%02X", digest[i]];
    }
    // 返回一个32位长度的加密后的字符串
    return result;
}

测试过程:

NSString *strMD5 = @"ABCD";
NSString *string = [NSString stringForMD5:strMD5];
NSLog(@"%@",string);

输出结果:

2017-05-16 13:48:40.500 MD5Demo[21174:2897239] 
CB08CA4A7BB5F9683C19133A84872CA7    

关于MD5的加密和解密也可以在这个网站上测试:http://www.cmd5.com/

AES 和 Base64 请参考 博客 MD5(加密)/AES/Base64加密和解密

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容