Javaで暗号化・復号化(というより、COMPLOCKで暗号化したものをJAVAで復号化した話)
◆開発環境
・Java8
・Eclipse4.5
◆やりかた
参考:
とある暗号化ソフト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とSJISとEUCの3つがある。それぞれtarを使ってインストールする。
インストール後、どれを入れたかについては、tarの中身のファイルの文字コードやサイズが違うので明確に判別できる。
たとえば[/opt/complock/COMPERRMSG.txt]ファイルの文字コードかサイズを見ればわかります。
ちなサイズ
UTF8: 16522
SJIS: 12025
EUC : 12025 ←SJISとEUCは同じなので、file -iで確認するしかないかも。
<文字コード確認コマンド>
サーバの文字コード確認:echo $LANG
ファイルの文字コード確認:file -i [filename]