セキュリティ サービス API では、ハッシュを直接計算できないようです。利用可能なパブリック ドメイン バージョンやリベラル ライセンス バージョンはたくさんありますが、可能であればシステム ライブラリの実装を使用したいと思います。
データには、NSData またはプレーン ポインターを介してアクセスできます。
ハッシュの暗号強度は私にとって重要です。SHA-256 は、最小許容ハッシュ サイズです。
セキュリティ サービス 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
これは NSString に基づいたかなり似たものです
+ (NSString *)hashed_string:(NSString *)input
{
const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:input.length];
uint8_t digest[CC_SHA256_DIGEST_LENGTH];
// This is an iOS5-specific method.
// It takes in the data, how much data, and then output format, which in this case is an int array.
CC_SHA256(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
// Parse through the CC_SHA256 results (stored inside of digest[]).
for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {
[output appendFormat:@"%02x", digest[i]];
}
return output;
}
(クレジットはhttp://www.raywenderlich.com/6475/basic-security-in-ios-5-tutorial-part-1に移動します)