这两天公司有这样两个需求,一个是从前端(h5)交互,获取到一个字符串,要求对这个字符串进行,SHA256计算摘要(也相当于加密),之后得到的是uint8_t类型的字节数组,然后对字节数组进行RSA公钥加密。在base64编码,返回给前端(h5 ios也是前端),最终数据还是给后台。另一个需求就是---公钥验签,就是后台给了txt文件,里面有加签和加密过的文本字符串,需要把这个文本字符串处理下,和原来数据验签,看看是不是被修改过。
1.需求一:获取去字符串----SHA256计算摘要----RSA加密---base64编码。
哈希值用作表示大量数据的固定大小的唯一值。数据的少量更改会在哈希值中产生不可预知的大量更改。所以为啥要SHA256。
SHA256的时候遇到一个坑,后台要的数据是SHA256之后的字节数组。网上大部分SHA256之后都是字符串,菜鸟,之前没了解过字节数组。
#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonHMAC.h>
- (NSData *)sha256:(NSString *)shaStr {
NSData *data = [shaStr dataUsingEncoding:NSUTF8StringEncoding];
uint8_t digest[CC_SHA256_DIGEST_LENGTH];
CC_SHA256(data.bytes, (CC_LONG)data.length, digest);
NSData *adata = [[NSData alloc] initWithBytes:digest length:CC_SHA256_DIGEST_L