ダークエリア

SEのお仕事の備忘録や、ゲームの話などなどを記事に放り込む!!

Javaで暗号化・復号化(というより、COMPLOCKで暗号化したものをJAVAで復号化した話)

◆開発環境

・Java8

・Eclipse4.5

 

◆やりかた

参考:

itmemo.net-luck.com 

とある暗号化ソフトCOMPLOCKの検証のために、

暗号化・復号化をJavaで試したときの記録。

 

COMPLOCKⅡって、そのソフトを持っているもの同士の暗号・復号ならいいけど、

持ってない人でも復号化ができるのか、ということで検証。

 

結果、可能。

 

COMPLOCKの暗号化設定と、JAVAの暗号化設定を合わせれば可能。

なので、COMPLOCKのヘッダなし暗号を使っている場合は容易に復号できる。

ヘッダありはしらない!!

 

<合わせた設定内容>

・暗号方式:AES
・変換方式:AES/CBC/PKCS5Padding
・キー、IV(イニシャルベクトル):オプションに使ったのと同じものを使用

 

<この時に作成したもの>

・共通処理(AESしかしてないけど):EncodeDecodeUtil.java - Google ドライブ

・プロジェクト(passあり): ProjectEncodeDecode.zip - Google ドライブ

 

というか、ソフトで暗号化するのに普通のJAVAで復号したいというのも変だよね。

ごめんねCOMPLOCK。。

 

◆課題

・改行コードを含むテキストをCOMPLOCKで暗号化すると、

 上記の方法ではうまく復号化できない。

 →おそらく、改行コードに対して特殊なことをしていそうだけど原因がわからない。。ちょっと保留。

 

◆その他暗号化・復号化に関する情報

・暗号化に使えるオプションの詳細:

[暗号化]ブロック暗号とは(AES/DES/Blowfish PKCS5Padding ECB/CBC IV) - [技術資料 + 技術資料] ぺんたん info

・暗号化に使えるオプションの詳細(JAVA):

暗号化・複合化を行う ブロック暗号 - [サンプルコード/Java] ぺんたん info

 

・暗号化実装の話

Javaで共通鍵暗号方式「AES」を使用した暗号化と復号化 | 俺の開発研究所

 

・Cipherクラスに使えるオプションの詳細

 (CBCとかECB、Paddingってなんやねんみたいなの詳しく書いてる):

5. Cipherクラス | TECHSCORE(テックスコア)

 

・その他 PKC#5(PKCS5Padding)のこと:

Java (JCE) で AES 暗号化するときの PKCS#5 の実態は PKCS#7 なのか? - ..たれろぐ..

CryptoSwiftでAES暗号化する + PKCS#5とか#7のはなし

 

 

◆追加

・COMPLOCKの文字コードを確認

COMPLOCKのインストールは、文字コードUTF8とSJISEUCの3つがある。それぞれtarを使ってインストールする。

インストール後、どれを入れたかについては、tarの中身のファイルの文字コードやサイズが違うので明確に判別できる。
たとえば[/opt/complock/COMPERRMSG.txt]ファイルの文字コードかサイズを見ればわかります。
ちなサイズ
UTF8: 16522
SJIS: 12025
EUC : 12025 ←SJISEUCは同じなので、file -iで確認するしかないかも。

文字コード確認コマンド>

サーバの文字コード確認:echo $LANG

ファイルの文字コード確認:file -i [filename]