iOS sha256加密

------------------.h文件--------------------

#import<Foundation/Foundation.h>

@interface NSString (SHA256)

- (NSString *)SHA256;

@end

-----------------------------------------------

#import "NSString+SHA256.h"

#import

@implementation NSString (SHA256)

-------------------------.m文件---------------------------------

#import "NSString+SHA256.h"

#import<CommonCrypto/CommonDigest.h>

- (NSString *)SHA256

{

const char *s = [self cStringUsingEncoding:NSASCIIStringEncoding];

NSData *keyData = [NSData dataWithBytes:s length:strlen(s)];

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];


    const unsigned char *buffer = (const unsigned char *)[out bytes];

    NSMutableString *HMAC = [NSMutableString stringWithCapacity:out.length * 2];

    for(inti =0; i

    [HMACappendFormat:@"%02x", buffer[i]];

    }

NSString* haSha = [HMAC uppercaseString];//如果后台将数据转化为大写,此处也应该转为大写

returnhaSha;

}

@end

-------------------------------------------------------------

如果是后台对key加密的话

#import <CommonCrypto/CommonDigest.h>

#import <CommonCrypto/CommonHMAC.H>

- (NSString *)hmac:(NSString *)plaintext withKey:(NSString *)key

{

const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];

const char *cData = [plaintext cStringUsingEncoding:NSASCIIStringEncoding];

unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];

CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);

NSData *HMACData = [NSData dataWithBytes:cHMAC length:sizeof(cHMAC)];

const unsigned char *buffer = (const unsigned char *)[HMACData bytes];

NSMutableString *HMAC = [NSMutableString stringWithCapacity:HMACData.length * 2];

for (int i = 0; i < HMACData.length; ++i){

[HMAC appendFormat:@"%02x", buffer[i]];

}

return HMAC;

}

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

推荐阅读更多精彩内容

  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 3,005评论 0 7
  • 更新: iOS13的适配在评论中已有人提到, 非常感谢, 请自行移步评论区 后台要对特定字符串进行加密, 在网上找...
    Just_go阅读 19,848评论 10 11
  • 常见的加密算法 MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ D...
    小小啄阅读 3,176评论 0 9
  • 遥看峰东,阡陌纵横,村居俨然,公路如练,泥路似带,水库像眸,碧水如魂,点缀风光,润泽四方,宏观世界,微观视角,妙不...
    西岭布衣阅读 333评论 0 1
  • 1,Handler + Thread 简单模式,适合简单的场景,懒时,偶尔来上一段也不错。复杂场景上,没有线程池的...
    进击的杰爷阅读 1,548评论 0 0