安全服务API似乎不允许我直接计算散列.有很多公共领域和自由许可的版本可用,但如果可能的话,我宁愿使用系统库实现.

可以通过NSData或普通指针访问数据.

哈希的加密强度对我很重要.SHA-256是可接受的最小哈希大小.

推荐答案

这是我在SHA1中使用的:

#import <CommonCrypto/CommonDigest.h>

+ (NSData *)sha1:(NSData *)data {
    unsigned char hash[CC_SHA1_DIGEST_LENGTH];
    if ( CC_SHA1([data bytes], [data length], hash) ) {
        NSData *sha1 = [NSData dataWithBytes:hash length:CC_SHA1_DIGEST_LENGTH];        
        return sha1;
    }
return nil;
}

CC_SHA1替换为CC_SHA256(或任何你需要的),将CC_SHA1_DIGEST_LENGTH替换为CC_SHA256_DIGEST_LENGTH.

Objective-c相关问答推荐

如何以编程方式获取iphone的IP地址

Objective C 中的 RSA 实现

iOS - 如何预加载键盘?

iOS中的非延迟图像加载

XCTAssertEqual 不适用于双精度值

如何将 CGPoint 添加到 NSMutableArray?

为什么 UITableViewCell Select 时所有背景都消失了?

如果用户点击屏幕键盘,我如何关闭键盘?

以原子方式写入文件与不写入文件之间的区别

iOS 正确使用 @weakify(self) 和 @strongify(self)

为什么我们必须在 Objective-C 中做 [MyClass class]?

iOS 在设备旋转时更改自动布局约束

了解 performSegueWithIdentifier

如何使用 iOS 创建一个大的红色 UIButton?

[NSMutableArray array] 与 [[NSMutableArray alloc] init] 之间的区别

在 Objective-C 中计算两个日期之间的天数

判断核心数据中是否存在对象的最快方法?

目标 C:读取文本文件

更改导航栏的字体

@synthesized 保留属性的释放是如何处理的?