- PR -

暗号化について

1
投稿者投稿内容
かんぱち
ベテラン
会議室デビュー日: 2006/06/01
投稿数: 73
投稿日時: 2006-12-02 13:22
またまた失礼します。

現在暗号化のロジックを組み、webで紹介されていた方法で、暗号・復号は
出来ました。
しかし、大きな問題で複数マシンで同じDBに実行されると言うことです、
暗号キーを同一にしても違うマシン(ハード)によって、違うの生成の仕方が行われる
のでは無いかと言う事です。

SecretKeyFactory keyFac = SecretKeyFactory.getInstance("DESede");
DESedeKeySpec keySpec = new DESedeKeySpec("SECRETKEY".getBytes());
SecretKey secKey = keyFac.generateSecret(keySpec);

cip.init(Cipher.ENCRYPT_MODE,secKey);
byte[] b = cip.doFinal(value.getBytes());
return new String(Hex.encodeHex(b));

主に上記の3行に疑問符が付いているのですが、このキー生成の仕方で
どんなPCでも同じ結果を得られるでしょうか?

現在自分のマシンでテストしている分には暗号化したい文字列は同一
結果・バイト長さが得られます。
SQLの条件キーとして利用可能にするためにも、同じ結果・バイトの長さは
必須条件となっています。
webでは確実に大丈夫と言い切れる記述がなく、信用性から組み込み可能か
と頭悩ませてます。

暗号化自体初めてでして、経験のある方ございましたら、よろしくお願いします。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-12-02 14:18
引用:

かんぱちさんの書き込み (2006-12-02 13:22) より:
暗号キーを同一にしても違うマシン(ハード)によって、違うの生成の仕方が行われる
のでは無いかと言う事です。


やってみればわかる・・と思うのですが(汗)。

鍵さえ同一であれば、同じものが生成されます。鍵がわかれば(他の環境でも)復号できるので「鍵」の取り扱いに注意するワケで・・

「違う生成の仕方」であれば、それは暗号化形式が違うということになります。ちゃんと「TripleDES」を指定しているので、違う形式になるとは思えません。

http://www.atmarkit.co.jp/aig/02security/encrypt.html
http://www.atmarkit.co.jp/aig/02security/des.html

[ メッセージ編集済み 編集者: shimix 編集日時 2006-12-02 14:19 ]
かんぱち
ベテラン
会議室デビュー日: 2006/06/01
投稿数: 73
投稿日時: 2006-12-03 01:25
ありがとうございます。

暗号化後の復号には今まで失敗していません。
ただ、マシンが違うことで、暗号化された文字列が違ってこないのか
が、心配です。
と言うのもこれをSQLの条件キーとして使えるかどうかという問題がありまして、もし出来ないようですとテーブル定義から仕様の見直しの可能性も出てくるからです。

個人情報保護法執行以降、たいしたデータでもないのに暗号化を要求されました・・。
1

スキルアップ/キャリアアップ(JOB@IT)