« Appleから発売の驚くべき製品は”iTV”か? | トップページ | 100均ショップでiPhone/iPod touch/iPadグッズ »

2010年8月13日 (金)

日付からパスワードを作成するアプリ作ってみた

EKEN M001まで買ってトライしているAndroidアプリ製作。

スケジューラーを作っているという話をしてずいぶんたちますが・・・実はファイル書き込みのところがうまく動かず長いこと座礁

いきなり初心者がファイル書き込みが必要なアプリを作っちゃいかんのかねぇ、ということで、しばらく悶々としてました。

が、ようやく休みに入って時間も出来たので、まったく別のアプリを思いつきました。

ファイル書き込みの必要のない、もうちょっと簡単なやつ。

これまた、私が会社に欲しいと思っているアプリなんですが。

簡単に言うと”パスワード生成アプリ”です。

それこそ巷にあふれるほどありますが、どうも気に入ったものがありません。

どこもそうかもしれませんが、私の会社ではメールにPC、CAD端末などなどで大量のユーザーIDとパスワードにあふれてます。これまたどのIDも、セキュリティ確保のため3ヶ月に一度は書き換えを要求されます。

このパスワードを作成・記憶するのが大変

こっそりメモに残してます(ちょっと暗号化してます)が・・・なんかセキュリティ悪そう。

で、巷にあるパスワード生成アプリてのは、大抵ランダムに表示。

しかし、一度忘れたら同じものは作れないというアルゴリズムです。

もちろん、過去のパスワードを保存し、複数のパスワードを一つのパスワードで呼び出せるというアプリもありますが、その一つのパスワードがばれたらアウト。正直、あまりセキュリティ上よい管理方法とは思えませんね。

これを何とかできないものか・・・と考えて作ったのが”日付からパスワードを生成”するアプリ

たとえば、今日の日付(2010年8月12日)を使ってパスワードを作るというもの。

メモにはIDとパスワード生成に使った日付を書いておき、もしパスワードを忘れたらアプリにその日付を入れると再び同じパスワードが呼び出せるというふうにすると、忘れる心配もなし。

もっとも、悪意のある人にそのアプリの存在を知られたとき、メモの日付をみられると解読されてしまいます。

そこで、自分にしかわからない記念日(誕生日や結婚記念日など)をもう一つのキーにすればどうか?

つまり二つの日付を使ってパスワードを作るというアイデアです。

メモには一方の日付だけを書いておけば、もう一つの秘密の日付を知らない限り解読できないというもの。

しかし本人は、メモにかかれた日付と、鍵となる記念日を組み合わせてパスワードを呼び出せる

セキュリティと、パスワード紛失問題を両方同時に解決できそうなこのアイデア。

まあ、私が思いつくくらいですからすでにありそうですが・・・とりあえずこんなレベルのアプリなら作れそう。

今回は

・ 二つの日付を入力

・ 0~9(数字)、a~z(小文字)、A~Z(大文字)の62文字を使用

・ 10文字のパスワードを作る

・ とりあえず、パスワードは表示するだけ(コピーペーストや書き込みはしない、というか出来ない(笑) )

という仕様で固定。

これだけのものですが、コーディックに丸1日

Date_pass06

ようやく、こんなのが出来ました。

Date_pass01

日付を入れるところが二箇所あります。

たとえば、記念日が1980年9月21日だったとして、本日(2010年8月12日)の日付からパスワードを作ったとします。

Date_pass02

ここで文字枠には数字しか入らないようにしました。文字は入力不可。日付ですからね。

ここで”パスワード作成”をクリック。

Date_pass03

見事!10文字のパスワードが出来ました。

一方の日付をたった1日変えるだけで、まったく違うパスワードができます。

Date_pass04

プログラムで苦労したのは、入力した”数字”をプログラム中に数字として認識させるところが大変だったこと。文字→数字の変換が必要でした。

一番悩んだのは、どうやって日付を62個の文字に変換するか?

解決策は、日付の各数字(6個の数字)を適当な数式にいれて、この答えをsin関数にほうりこんでやりました。

すると、必ず-1~1までの数字になり、絶対値を取ると0~1になるため、これに61をかけて整数型の数字に直せば、62個の数字(0~61)が作られます。

あとは、0="0"、1="1"、・・・、11="b"、12="c"、・・・、61="Z"となるよう、整数を文字に変換。

もし0~1の数字だけのパスワードが作りたければ、61を9に変えるだけでOK。増減させるのが簡単です。

なるべくランダムな値が帰ってくるような数式を作るため、まずExcelでプロトタイプを作成しました。

まあ、他にも細かい話はいろいろあるんですがきっと面白くないのでやめときます。

ところでこのアプリ、まだまだ問題を抱えてまして・・・

Date_pass05

致命的な問題ではないですが、”90月200日”なんていうありえない日付もはいってしまいます。

別にこれでもパスワードは作れてしまうので問題はないのですが気持ち悪いですね(笑)

あと改良していきたいのは、

・ 生成したパスワードをコピー&ペーストできるようにする

・ ”数字のみ”、”数字+アルファベット”、”数字+アルファベット+記号”など、パスワードに使う文字を選択できるようにする

・ パスワードの桁数を選べるようにする

・ もうちょっとましな外観・アイコンにするwww

これが出来ればアプリとして世の中に出せそうです。

一応EKEN M001にも入れて、使ってみました。

Img_1053

仮称でアプリ名が”日付でパスワード作成”。実も蓋もない名前です(笑)

Img_1054

先ほどと同じ日付を入れると、ちゃんと同じ結果が得られてます。

もっとも、EKEN M001を会社に持っていくのはたぶん無理なので、このままじゃ作った本人が使えないですね。

そろそろまともなAndroid端末でも買いますかねぇ。


[通常中古]Sony Ericsson FOMA SO-01B XPERIA Sensuous Black■税込■【白ロム携帯電話】 【 中古パソコン イオシス 】

とりあえず、試してみたいと思われる方はこちらからダウンロードできます。

apkというファイルなので、EKEN M001なら”PK Manager”というのを使ってインストールできます。

未完成品なので、あまり期待しないでね

ところで、最近ASCII.jpでAndroidアプリ製作に関する連載をやってます。

ASCII.jp:これで作れる!Androidのアプリケーション

まだメニュー表示までですが、プログラム動作の仕組みなどが非常にわかりやすい解説です。これはお勧め。

« Appleから発売の驚くべき製品は”iTV”か? | トップページ | 100均ショップでiPhone/iPod touch/iPadグッズ »

Android」カテゴリの記事

コメント

こんにちは。
東西南北どこへ行くにも道路が渋滞しています。
南は何も無いかと思いきや、三浦半島や湘南海岸へ海水浴へ行く車で大渋滞だそうで・・・


 Excelのワークシート関数やマクロのように「小粒でもピリリと辛い」アプリが出来そうで、組込系のプログラミングは面白いです。パスワード管理(&記憶)関連など、無意味記憶が大の苦手な自分にとっては欲しいアプリです。

日付を使うとのことで、日付時刻値(DateTime)をRandomSeed関数に突っ込んで乱数を発生させるのかと思ってました。DateTimeはシステムに依存しますけど、おおむね32bitか64bitの整数ですから、何かと便利です。(特定年月日からの積算秒数値)

私はiPhone用のメモアプリが欲しいです。Googleと相互に同期できるものが。

こんにちは、Akiraさん。

あまりテクニカルなことが出来ないので、こんなプログラムになりました。Excelでも作れる程度のものにえらい苦労しました。

本当はiPhoneアプリがよかったんですけどね。Mac買わないといけませんし。ちょっと出費が・・・

これくらいの簡単なプログラムをまた考えてみます。

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 日付からパスワードを作成するアプリ作ってみた:

« Appleから発売の驚くべき製品は”iTV”か? | トップページ | 100均ショップでiPhone/iPod touch/iPadグッズ »

当ブログ内検索

スポンサード リンク

ブログ村

無料ブログはココログ