NDEF(NFC Data Exchange Format)は、非接触ICカードにデータを保存するための規格です。

AndroidスマートフォンやWindows8が正式対応しており、カードをかざすだけで、URLを開いたり、アドレス帳への登録が可能です。

さてNFCといえは、FeliCa Lite(Type3)や、Mifare Ultralight(Type2)が一般的なわけですが、Mifare Classicが使えないわけでもありません。

Mifare Classicの特徴
FeliCa LiteやMifare Ultralightにはない、鍵付き領域があります。
鍵(6Byte)を設定する事で、不正な読み書きを防止可能です。
(読み書き、読込みのみ等、柔軟な設定が可能)

●NDEFを保存する
MAD(Mifare Application Directory)
第0セクターに、MAD(カード内容を表すヘッダー)を書き込みます。
MADには、第1〜第15セクター、それぞれの利用用途(AID=Application ID)を記載します。

NDEFを表すAIDは0x03E1です。

NDEFセクター
AIDを0x03e1としたセクターには、ひとつ以上のTLVブロックを保管します。
TLV=Type 、Length、Value

TYPE
NDEFメッセージを表すTypeは0x03です。

LENGTH
格納するデータが0〜0xFEまでであれば1byteで、0xFF以上であれば3Byte(0xFF 0xSIZE 0xSIZE)で格納します。

Value
NDEF Forumで定義されるNDEF Messageを格納します。

ターミネーターTLV
最後のTLVブロックは、ターミネーターTLVにします。
T=0xFE
Lなし
Vなし


このフォーマットでカードに書き込む事で、Androidが認識します。

MADにてNDEF以外を設定したセクターには、鍵を設定した任意のデータが保存可能です。
これは、Type1〜Type3タグには無いメリットです。