自堕落な技術者の日記

基本は喰ってるか飲んでるかですが、よく趣味でカラオケ・PKI・署名・認証・プログラミング・情報セキュリティをやっています。旅好き。テレビ好きで芸能通

C#

OATH関連でごにょごにょと、、、(その4,多分最終回)

前回、Javaでちゃんと動くことが確認されたので、週末にC#でワンタイムパスワードのソフトウェアトークンを書いてみました。見てくれは時間があるときもう少しオシャレにするとして、とりあえずこんな感じ、、、

softtoken02


nec_0003



何回ボタン押してもハードウェアトークンのと同じ値がちゃんと出てきます。にょほほ、、、、

RFC 4226 HOTPアルゴリズムのJavaからC#の移植は簡単だった、、、、というより、Javaのコードなんか全く参考にしないで書いてしまいました。

符合なし(unsigned)は楽チン


今回のやつをやってみて、Javaが使いにくいと思うのは符号なし整数(unsigned int, unsigned long)がプリミティブとして扱えなくて、byte型が符合(+、−)を持っちゃっている所です。

C#は符合無しのulongのuintもあり、byte型はデフォルトで符合無しの数になっています。もちろん符合付きのlong, int, sbyteもあります。符合無しを選べる分、符合を気にした余計な処理も必要なくてスッキリとしたプログラムになりました。行数も2/3ぐらいにはなっているでしょうか。

暗号アルゴリズム


今回のは共通鍵コンテナを読むのにAESとHmacSHA1を、HOTPにはHmacSHA1を使うんですが .NET ではあっさり問題なくでいました。AESについてはブロックモードとパディングがどうなんかなぁ、、、と思いましたが、何も設定しないで.NETのRijndaelManagedクラスを使えばオーケーでした。これ使えば"AES/CBC/PKCS5Padding"になるということなんだと思います。

逆に、ブロックモードとパディングを設定したい場合にはどうなっちゃうんでしょうね???

OATHについては、やりたかった事は大体できたので連載的なものは今回でおしまいってことで、、、m(_ _)mとりあえず、.NETのXPathも使いこなせるようになったんで良かったです(−−;

Visual C# 2008 Express

ちょっとXML署名関係で調べたいことがあり Microsoft Visual C# 2008 Express Editionでプログラムを作ってみました。やっぱり基本的にはSharp Developよりもよく出来ているなぁ、、、、、

たまにしか使わないので、すぐ忘れてしまいますが

(1)暗号系のプログラムを作成する際にはSystem.Securityの参照を追加する

.NET での参照の追加


(2)プロジェクトはマイドキュメントのVisual Studio 2008\Projectsに作られる

ので、これは備忘録として、、、、(^^;
最新記事
Categories
Archives
Twitter
記事Google検索

本ブログ内をGoogle検索
Yahoo!アクセス解析
Travel Advisor
記事検索
QRコード
QRコード
  • ライブドアブログ