LUNARAVE WEBクリエイターの仕事と休息

アクセスカウンタ

Google Maps APIの利用戦国IXAWeb技術Youtubeチャンネル

zoom RSS JAVAで文字列を暗号化と復号化する

<<   作成日時 : 2015/01/21 08:30   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

異なるサーバ間やメール本文からサイトへ遷移する際にメールアドレスなど個人を判別するためのパラメータをやり取りするのにそのまま文字列を記載するのではなく、暗号化するとともに受け取った方はその暗号化文を複合化して元に戻す。

JAVAには暗号・復号をするためにCipherが用意されており、これとbase64を利用して実装する。

1.文字列を暗号化する
下記にて文字列を暗号化している。
複合化する場合は変数:strResultを利用する。


//認証key
String key = "1234567890123456";
//初期化ベクトル
String vec = "abcdefghijklmnop";
//暗号化対応文字列
byte input[] = "文字列".getBytes();
// 暗号化キーと初期化ベクトルをバイト配列へ変換
byte[] byteKey = key.getBytes("UTF-8");
byte[] byteIv = vec.getBytes("UTF-8");
// 暗号化キーと初期化ベクトルのオブジェクト生成
SecretKeySpec key = new SecretKeySpec(byteKey, "AES");
IvParameterSpec iv = new IvParameterSpec(byteIv);
// Cipherオブジェクト生成
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
// Cipherオブジェクトの初期化
c.init(Cipher.ENCRYPT_MODE, key, iv );
//暗号化を実施
byte encrypted[] = c.doFinal(input);
// Base64へエンコード → 別途 commons-codec が必要
String strResult = Base64.encodeBase64String(encrypted);


2.文字列を復号化する
下記にて暗号化した文字列を元に戻す。


// Base64をデコード
byte[] byteText = Base64.decodeBase64(strResult);
// Cipherオブジェクト生成
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// Cipherオブジェクトの初期化
cipher.init(Cipher.DECRYPT_MODE, key, iv);
// 復号化の結果格納
byte[] byteResult = cipher.doFinal(byteText);
// バイト配列を文字列へ変換
strResult = new String(byteResult, "UTF-8");



keyとvecが合っていれば異なるサーバ間でも暗号・復号が可能になる。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
JAVAで文字列を暗号化と復号化する LUNARAVE WEBクリエイターの仕事と休息/BIGLOBEウェブリブログ
文字サイズ:       閉じる