// Create an MD5 instance using the convenience constructor. MD5 *md5 = [MD5 md5WithString:@"Hello, world."]; // Print the MD5 hash value as string. // This will show "md5 = 080aef839b95facf73ec599375e92d47". NSLog(@"md5 = %@", md5);
Another example code below shows another different way to compute MD5 with update and final.
// Create MD5 instance for computation. md5 = [[MD5 alloc] init]; // Update. See also // updateWith:(const void *)data length:(CC_LONG)length [md5 updateWithString:@"Hello, world."]; // Final. The returned pointer points to the internal buffer // of md5 whose size is CC_MD5_DIGEST_LENGTH (=16). unsigned char *md = [md5 final]; // After 'final', a valid NSString expression is available // through 'description' method. NSLog(@"md5 = %@", md5);
Supported algorithms are as follows.
- MD5
- SHA1
- SHA224
- SHA256
- SHA384
- SHA512
A simple implementation to add md5 method to NSString will look like the following.
// NSString+MessageDigest.h #import <Foundation/Foundation.h> #import "MD5.h" @interface NSString (MessageDigest) - (MD5 *)md5; @end // NSString+MessageDigest.m #import "NSString+MessageDigest.h" @implementation NSString (MessageDigest) - (MD5 *)md5 { return [MD5 md5WithString:self]; } @end
And its usage will be:
#import "NSString+MessageDigest.h" NSLog(@"md5 = %@", @"Hello, world.".md5);
Project Page
https://github.com/TakahikoKawasaki/nv-ios-digest
iOS におけるメッセージダイジェスト (MD5, SHA1, 他) の計算
nv-ios-digest (Apache License, Version 2.0) プロジェクトには、MD5 や SHA-1 などのメッセージダイジェスト計算に特化した Objective-C クラス群が含まれています。次の例では "Hello, world." の MD5 ハッシュ値を出力しています。
// コンビニエンスコンストラクタを用いて MD5 インスタンスを作成する。 MD5 *md5 = [MD5 md5WithString:@"Hello, world."]; // MD5 ハッシュ値を文字列として出力する。 // "md5 = 080aef839b95facf73ec599375e92d47" が出力される。 NSLog(@"md5 = %@", md5);
次の例では、update と final を用いて MD5 を計算する別の方法を示しています。
// MD5 のインスタンスを作成する。 md5 = [[MD5 alloc] init]; // 更新する。updateWith:(const void *)data length:(CC_LONG)length も // 参照のこと。 [md5 updateWithString:@"Hello, world."]; // 最終処理をおこなう。返却されるポインターは md5 の内部バッファーを // 指しており、そのサイズは CC_MD5_DIGEST_LENGTH (=16)。 unsigned char *md = [md5 final]; // final 実行後、description メソッドで有効な NSString を取得できる。 NSLog(@"md5 = %@", md5);
下記のアルゴリズムがサポートされています。
- MD5
- SHA1
- SHA224
- SHA256
- SHA384
- SHA512
md5 メソッドを NSString に追加する簡易実装は次のようになります。
// NSString+MessageDigest.h #import <Foundation/Foundation.h> #import "MD5.h" @interface NSString (MessageDigest) - (MD5 *)md5; @end // NSString+MessageDigest.m #import "NSString+MessageDigest.h" @implementation NSString (MessageDigest) - (MD5 *)md5 { return [MD5 md5WithString:self]; } @end
使い方は次のとおり:
#import "NSString+MessageDigest.h" NSLog(@"md5 = %@", @"Hello, world.".md5);
プロジェクトページ
https://github.com/TakahikoKawasaki/nv-ios-digest