2009年10月
2009年10月28日
昨日、8バイトのIDが生成できるようになりましたが、少し欲が出てきて、4バイトのID生成もしたくなりました。
そこで、4バイトのブロック暗号はないかと調べてみたのですが、Javaの実装が見つかりませんでした。
良く考えてみると、今回は、ID用の文字列を生成することが目的ですので、暗号化というよりも、バイト配列を可逆変換でかき混ぜるということをしたいだけでした。なので、自分で作る方が早いということが分かりました。
RC5アルゴリズムのように、バイト配列を二つに分割して、XORとrotate演算を何回か繰り返しせば、可逆変換でバイト配列をかき混ぜることができます。
これでようやく、ID生成のライブラリができました。
そこで、4バイトのブロック暗号はないかと調べてみたのですが、Javaの実装が見つかりませんでした。
良く考えてみると、今回は、ID用の文字列を生成することが目的ですので、暗号化というよりも、バイト配列を可逆変換でかき混ぜるということをしたいだけでした。なので、自分で作る方が早いということが分かりました。
RC5アルゴリズムのように、バイト配列を二つに分割して、XORとrotate演算を何回か繰り返しせば、可逆変換でバイト配列をかき混ぜることができます。
これでようやく、ID生成のライブラリができました。
2009年10月26日
ID生成のため、DBでユニークに生成したlong値を、可逆暗号で文字列にすることにしました。
簡単に実装できるかと思っていたのですが、8バイトのデータを、Javaライブラリを使って暗号化すると、16バイトになってしまうという問題にはまってしまいました。
IDが16バイトでも動作としては問題は起こらないのですが、IDが意味もなく長いのは非常に気になります。(IDは、URLなどに含まれた場合、ユーザの目に触れることになりますので)
Java BouncyCastle と PHP mcrypt のパディング処理の違い - たれろぐの情報によると、どうも、Javaでは、64ビットブロック暗号で、8バイトちょうどのデータをエンコードした場合に、8バイトのパディングが付いてしまうようです。
OpenSSLでも実験してみましたが、同じような結果になりました。
久しぶりに「暗号技術大全」を引っ張り出して、Blowfish暗号作者のソースを調べてみたのですが、8バイトちょうどのときはパディングは付けていませんでした。
時間を経て、何らかの事情によって、典型的な実装が変わってしまったのでしょうか。(OpenSSLがパディングを付けたので、他の実装も真似してパディングを付けているのかもしれません。)
暗号技術大全
著者:ブルース・シュナイアー
販売元:ソフトバンククリエイティブ
発売日:2003-05-31
おすすめ度:
クチコミを見る
簡単に実装できるかと思っていたのですが、8バイトのデータを、Javaライブラリを使って暗号化すると、16バイトになってしまうという問題にはまってしまいました。
IDが16バイトでも動作としては問題は起こらないのですが、IDが意味もなく長いのは非常に気になります。(IDは、URLなどに含まれた場合、ユーザの目に触れることになりますので)
Java BouncyCastle と PHP mcrypt のパディング処理の違い - たれろぐの情報によると、どうも、Javaでは、64ビットブロック暗号で、8バイトちょうどのデータをエンコードした場合に、8バイトのパディングが付いてしまうようです。
OpenSSLでも実験してみましたが、同じような結果になりました。
久しぶりに「暗号技術大全」を引っ張り出して、Blowfish暗号作者のソースを調べてみたのですが、8バイトちょうどのときはパディングは付けていませんでした。
時間を経て、何らかの事情によって、典型的な実装が変わってしまったのでしょうか。(OpenSSLがパディングを付けたので、他の実装も真似してパディングを付けているのかもしれません。)
暗号技術大全著者:ブルース・シュナイアー
販売元:ソフトバンククリエイティブ
発売日:2003-05-31
おすすめ度:
クチコミを見る
2009年10月21日
2009年10月04日
最近、色々な人に会うようにしていますが、そのたびに新しい発見があります。色々とビジネスの話しを聞けますので、私も次の事業のイメージを膨らましています。
今のところ、私の中では4つほど事業のアイデアがあって、どれも捨てがたいのですが、時間的に言って、実現できるのは2つくらいかなあと思っています。
ただ、以下の原則に従うと、100個の良いアイデアを考え付かないと、成功できないのかもしれません。
・アイデアが1000個あるとして、その中で、良いアイデアは100個ある
・良いアイデアが100個あるとして、その中で、(スマートに)実現できるアイデアは10個ある
・実現可能なアイデアが10個あるとして、その中で、成功するアイデアは1個ある
事業のアイデアを考えるときは、業界地図を見ていると、いろいろとアイデアが膨らみます。
会社四季報 業界地図2010年版
販売元:東洋経済新報社
発売日:2009-09-02
おすすめ度:
クチコミを見る
余談ですが、上の本では、業界の市場動向を5段階の天気マークで表現しているのですが、快晴(最高ランク)は、「クラウドコンピューティング」だけのようです。「クラウドコンピューティング」は、GoogleやAmazonなどの海外企業が支配していますので、日本はなかなか厳しいですねー。
今のところ、私の中では4つほど事業のアイデアがあって、どれも捨てがたいのですが、時間的に言って、実現できるのは2つくらいかなあと思っています。
ただ、以下の原則に従うと、100個の良いアイデアを考え付かないと、成功できないのかもしれません。
・アイデアが1000個あるとして、その中で、良いアイデアは100個ある
・良いアイデアが100個あるとして、その中で、(スマートに)実現できるアイデアは10個ある
・実現可能なアイデアが10個あるとして、その中で、成功するアイデアは1個ある
事業のアイデアを考えるときは、業界地図を見ていると、いろいろとアイデアが膨らみます。
会社四季報 業界地図2010年版販売元:東洋経済新報社
発売日:2009-09-02
おすすめ度:
クチコミを見る
余談ですが、上の本では、業界の市場動向を5段階の天気マークで表現しているのですが、快晴(最高ランク)は、「クラウドコンピューティング」だけのようです。「クラウドコンピューティング」は、GoogleやAmazonなどの海外企業が支配していますので、日本はなかなか厳しいですねー。





















