iOS字符串NSString加密SHA/MD5(Objective-C)

2018.3.20

字符串在线加密
在线加密1

iOS 简单应用
创建一个NSString分类

//  NSString+RFCategory.h
#import <Foundation/Foundation.h>

@interface NSString (RFCategory)

///SHA-1加密
- (NSString *)rf_EncryptSHA1;

///SHA-256加密
- (NSString *)rf_EncryptSHA256;

///MD5加密
- (NSString *)rf_EncryptMD5;

@end


//  NSString+RFCategory.m
#import "NSString+RFCategory.h"
#import <CommonCrypto/CommonDigest.h>

@implementation NSString (RFCategory)

- (NSString *)rf_EncryptSHA1 {
    if (self.length<=0) return nil;

    const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
    NSData *keyData = [NSData dataWithBytes:cstr length:self.length];

    return [NSString RF_EncryptSHA1:keyData];
}
+ (NSString *)RF_EncryptSHA1:(NSData *)keyData {
    if (keyData.length<=0) return nil;

    uint8_t digest[CC_SHA1_DIGEST_LENGTH];
    CC_SHA1(keyData.bytes, (unsigned int)keyData.length, digest);

    NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
    for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
        [output appendFormat:@"%02x", digest[i]];
    }

    return output;
}

- (NSString *)rf_EncryptSHA256 {
    if (self.length<=0) return nil;

    const char *s = [self cStringUsingEncoding:NSASCIIStringEncoding];
    NSData *keyData = [NSData dataWithBytes:s length:strlen(s)];

    return [NSString RF_EncryptSHA256:keyData];
}
+ (NSString *)RF_EncryptSHA256:(NSData *)keyData {
    if (keyData.length<=0) return nil;

    uint8_t digest[CC_SHA256_DIGEST_LENGTH] = {0};
    CC_SHA256(keyData.bytes, (CC_LONG)keyData.length, digest);
    NSData *out = [NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];
    NSString *hash = [out description];
    hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
    hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
    hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];

    return hash;
}

- (NSString *)rf_EncryptMD5 {
    if (self.length<=0) return nil;

    const char *cStr = [self UTF8String];
    unsigned char digest[16];
    CC_MD5( cStr, (unsigned int)strlen(cStr), digest );

    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [output appendFormat:@"%02x", digest[i]];
    }

    return  output;
}

@end

参考链接:
1.iOS sha256加密

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容