md5とsha1を求める方法
ソースコード
#import <CommonCrypto/CommonDigest.h> + (NSString *) sha1:(NSString *)input { const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data = [NSData dataWithBytes:cstr length:input.length]; uint8_t digest[CC_SHA1_DIGEST_LENGTH]; CC_SHA1(data.bytes, data.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 *) md5:(NSString *)input { const char *cStr = [input UTF8String]; unsigned char digest[16]; CC_MD5( cStr, 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; }
テストコード
NSLog( @"%@", [ViewController sha1:@"hoge"] ); NSLog( @"%@", [ViewController md5:@"hoge"] );
- 作者: Matt Galloway,長尾高弘
- 出版社/メーカー: 翔泳社
- 発売日: 2013/11/02
- メディア: 大型本
- この商品を含むブログ (2件) を見る
検証
出力結果
31f30ddbcb1bf8446576f0e64aa4c88a9f055e3c ea703e7aa1efda0064eaa507d9e8ab7e
他の方法で計算
$ echo -n "hoge" | openssl sha1 (stdin)= 31f30ddbcb1bf8446576f0e64aa4c88a9f055e3c $ echo -n "hoge" | md5 ea703e7aa1efda0064eaa507d9e8ab7e
ハッシュ値は合ってますね!
入門 Objective-C 2.0 (Programmer’s SELECTION)
- 作者: Scott Knaster,Mark Dalrymple,長尾高弘
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/16
- メディア: 大型本
- 購入: 14人 クリック: 133回
- この商品を含むブログ (22件) を見る