強火で進め

このブログではプログラム関連の記事を中心に書いてます。

UUIDを生成する

ちょっと前に高木さんとソフトバングモバイルのCTOとのとtwitter上での話で「セキュリティ的に正しい方法はデバイスのUDIDを使うのでは無くアプリの初回起動時にランダムな文字列を生成し、それをキーとすべき」との話がありました。

高木浩光@自宅の日記 - 今こそケータイID問題の解決に向けて
http://takagi-hiromitsu.jp/diary/20100619.html#p01

ランダムな文字列と言えばUUID(Universally Unique Identifier)かなと思いiPhoneでの生成方法を調べたところ CFUUID というクラスを使えば作成出来るみたいでした。

CFUUID Reference
http://developer.apple.com/iphone/library/documentation/CoreFoundation/Reference/CFUUIDRef/Reference/reference.html#//apple_ref/c/func/CFUUIDCreate

サンプルないかな?と探したところ、Mac向けですがサンプルを作られてる方を発見!!

(旧) Cocoaの日々: UUID を作る - CFUUIDCreate と globallyUniqueString
http://xcatsan.blogspot.com/2009/11/uuid-cfuuidcreate-globallyuniquestring.html

このサイトを参考に(ほとんどそのままですが(^_^;))以下の様な感じで作成しました。
プロジェクト全体を確認したい方はこちらからプログラムをDLして下さい。

- (NSString*) stringWithUUID {
	CFUUIDRef uuidObj = CFUUIDCreate(nil);//create a new UUID
	//get the string representation of the UUID
	NSString *uuidString = (NSString*)CFUUIDCreateString(nil, uuidObj);
	CFRelease(uuidObj);
	return [uuidString autorelease];
}

- (IBAction)createNewUuid {
	[uuidTextField setText:[self stringWithUUID]];
}

関連情報

他の環境への移植性が気になる方は代わりにWikipediaのUUIDの項目に紹介されているC/C++のライブラリを使うのが良いでしょう。

Universally Unique Identifier - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Uuid