• IOS 数据加密方式(加盐,MD5加密,)


    加密方式封装

    @interface NSString (Hash)
    
    @property (readonly) NSString *md5String;
    @property (readonly) NSString *sha1String;
    @property (readonly) NSString *sha256String;
    @property (readonly) NSString *sha512String;
    
    - (NSString *)hmacSHA1StringWithKey:(NSString *)key;
    - (NSString *)hmacSHA256StringWithKey:(NSString *)key;
    - (NSString *)hmacSHA512StringWithKey:(NSString *)key;
    
    @end
    View Code
    #import "NSString+hash.h"
    
    #import <CommonCrypto/CommonDigest.h>
    #import <CommonCrypto/CommonHMAC.h>
    
    @implementation NSString (Hash)
    
    - (NSString *)md5String
    {
        const char *string = self.UTF8String;
        int length = (int)strlen(string);
        unsigned char bytes[CC_MD5_DIGEST_LENGTH];
        CC_MD5(string, length, bytes);
        return [self stringFromBytes:bytes length:CC_MD5_DIGEST_LENGTH];
    }
    
    - (NSString *)sha1String
    {
        const char *string = self.UTF8String;
        int length = (int)strlen(string);
        unsigned char bytes[CC_SHA1_DIGEST_LENGTH];
        CC_SHA1(string, length, bytes);
        return [self stringFromBytes:bytes length:CC_SHA1_DIGEST_LENGTH];
    }
    
    - (NSString *)sha256String
    {
        const char *string = self.UTF8String;
        int length = (int)strlen(string);
        unsigned char bytes[CC_SHA256_DIGEST_LENGTH];
        CC_SHA256(string, length, bytes);
        return [self stringFromBytes:bytes length:CC_SHA256_DIGEST_LENGTH];
    }
    
    - (NSString *)sha512String
    {
        const char *string = self.UTF8String;
        int length = (int)strlen(string);
        unsigned char bytes[CC_SHA512_DIGEST_LENGTH];
        CC_SHA512(string, length, bytes);
        return [self stringFromBytes:bytes length:CC_SHA512_DIGEST_LENGTH];
    }
    
    - (NSString *)hmacSHA1StringWithKey:(NSString *)key
    {
        NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
        NSData *messageData = [self dataUsingEncoding:NSUTF8StringEncoding];
        NSMutableData *mutableData = [NSMutableData dataWithLength:CC_SHA1_DIGEST_LENGTH];
        CCHmac(kCCHmacAlgSHA1, keyData.bytes, keyData.length, messageData.bytes, messageData.length, mutableData.mutableBytes);
        return [self stringFromBytes:(unsigned char *)mutableData.bytes length:mutableData.length];
    }
    
    - (NSString *)hmacSHA256StringWithKey:(NSString *)key
    {
        NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
        NSData *messageData = [self dataUsingEncoding:NSUTF8StringEncoding];
        NSMutableData *mutableData = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH];
        CCHmac(kCCHmacAlgSHA256, keyData.bytes, keyData.length, messageData.bytes, messageData.length, mutableData.mutableBytes);
        return [self stringFromBytes:(unsigned char *)mutableData.bytes length:mutableData.length];
    }
    
    - (NSString *)hmacSHA512StringWithKey:(NSString *)key
    {
        NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
        NSData *messageData = [self dataUsingEncoding:NSUTF8StringEncoding];
        NSMutableData *mutableData = [NSMutableData dataWithLength:CC_SHA512_DIGEST_LENGTH];
        CCHmac(kCCHmacAlgSHA512, keyData.bytes, keyData.length, messageData.bytes, messageData.length, mutableData.mutableBytes);
        return [self stringFromBytes:(unsigned char *)mutableData.bytes length:mutableData.length];
    }
    
    #pragma mark - Helpers
    
    - (NSString *)stringFromBytes:(unsigned char *)bytes length:(int)length
    {
        NSMutableString *mutableString = @"".mutableCopy;
        for (int i = 0; i < length; i++)
            [mutableString appendFormat:@"%02x", bytes[i]];
        return [NSString stringWithString:mutableString];
    }
    
    @end
    View Code
    #import "HMViewController.h"
    #import "NSString+Hash.h"
    
    #define Salt @"fsdhjkfhjksdhjkfjhkd546783765"
    
    @interface HMViewController ()
    
    @end
    
    @implementation HMViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [self digest4:@"123"]; //
        
        
        [self digest4:@"abc"];
        [self digest4:@"456"];
    }
    
    /**
     *  直接用MD5加密
     */
    - (NSString *)digest:(NSString *)str
    {
        NSString *anwen = [str md5String];
        NSLog(@"%@ - %@", str, anwen);
        return anwen;
    }
    
    /**
     *  加盐
     */
    - (NSString *)digest2:(NSString *)str
    {
        str = [str stringByAppendingString:Salt];
        
        NSString *anwen = [str md5String];
        NSLog(@"%@ - %@", str, anwen);
        return anwen;
    }
    
    /**
     *  多次MD5
     */
    - (NSString *)digest3:(NSString *)str
    {
        NSString *anwen = [str md5String];
        
        anwen = [anwen md5String];
        
        NSLog(@"%@ - %@", str, anwen);
        return anwen;
    }
    
    /**
     *  先加密, 后乱序
     */
    - (NSString *)digest4:(NSString *)str
    {
        NSString *anwen = [str md5String];
        
        // 注册:  123 ----  2CB962AC59075B964B07152D234B7020
        
        // 登录: 123 --- 202CB962AC59075B964B07152D234B70
        
        NSString *header = [anwen substringToIndex:2];
        NSString *footer = [anwen substringFromIndex:2];
        
        anwen = [footer stringByAppendingString:header];
        
        
        NSLog(@"%@ - %@", str, anwen);
        
        return anwen;
    }
    
    @end
  • 相关阅读:
    MySQL Binlog Digger 4.28 【mysql日志分析工具】
    为什么要把MySQL的binlog格式修改为row
    MySQL Binlog Digger与binlog2sql对比
    为什么MySQL binlog_format一定要设置成row
    mysql binlog 参数_MySQL Binlog常用参数
    解决webstorm不能识别vue的@路径引用
    Datetime and Interval Data Types
    管理视图
    oracle权限类型大全
    oracle监听器
  • 原文地址:https://www.cnblogs.com/liuwj/p/6605877.html
Copyright © 2020-2023  润新知