2011/09/04

[felica]張り巡られた伏線

MACの計算があわんあわんと騒いでいたが、ようやくできた。

いや、FeliCa Liteのユーザーズマニュアルを読んでいるときから、少し違和感があったのだ。
ドキュメントとしては基本的にビッグエンディアンで書かれているのだが、ブロックの説明では「Byte15-8」「Byte7-0」のように、リトルエンディアンで格納されているような記述になっていたのだ。

しかしこちらからすると、メモリ上のデータは1byteずつしか扱わないので、エンディアンもなにもあったもんじゃない。
なので、気にしていなかった。

MACの計算でも「CK1[7:0]」みたいになっていたので、このドキュメントはそういう表し方をしているんだ、と納得させていた。


しかしMACの計算があまりにもうまくいかないので、FeliCa Liteのドキュメントを全部読み直した。
PDF4つくらいで、それほど量は多くない。

読み進めるとテクニカルノートに「DES演算の入出力データの並び(エンディアン)について」という項目がある。
なんでも、FeliCa StandardとFeliCa LiteではDES演算に入れ込むデータの順が異なるという。
これか!!

 

入れ替えしてみると、計算があった。
そうか、あの記述はそういう意味があったのか、と張り巡らされた伏線に気付いた私であった。

2 件のコメント:

  1. 匿名13:32

    お陰様で自分も出来ました、同じ所で引っかかってました、
    自分はVCで OpenSSLのDES_ecb3_encrypt()を使用しました。

    返信削除
  2. 私はAndroidのJavaで実装したのですが、Javaも暗号化もよく使ったことがないので、ずっとAPIの使い方がまずいのだろうと思っていました。
    これ、気付きにくいですよねぇ。

    返信削除

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。