Javaで実現されたDES暗号解読ツールクラスの例
本明細書の例は、Javaによって実現されるDES暗号解読ツールクラスについて述べる。皆さんに参考にしてあげます。具体的には以下の通りです。
一つの工具類は、よく使われています。深く研究しないで、直接に使うことができます。
DesUtil.java
オンラインDES暗号化/復号ツール:
http://tools.jb51.net/password/des_アンコール
テキストオンライン暗号解読ツール(AES、DES、RC 4などを含む):
http://tools.jb51.net/password/txt_アンコール
MD 5オンライン暗号化ツール:
http://tools.jb51.net/password/CreateMD5Password
オンラインハッシュ/ハッシュアルゴリズム暗号化ツール:
http://tools.jb51.net/password/hash_encrypt
オンラインMD 5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160暗号化ツール:
http://tools.jb51.net/password/hash_md 5_share
java関連の内容についてもっと興味がある読者は、当駅のテーマを調べてもいいです。「Java数学演算技術のまとめ」、「Javaデータ構造とアルゴリズム教程」、「Java文字と文字列操作テクニックのまとめ」、「Java操作DOMノード技術のまとめ」、「Javaキャッシュ操作テクニックのまとめ」
本論文で述べたように、皆さんのjavaプログラムの設計に役に立ちます。
一つの工具類は、よく使われています。深く研究しないで、直接に使うことができます。
DesUtil.java
package lsy;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class DesUtil {
/**
* @param args
*/
public static void main(String[] args) {
// algorithm="AES"
System.out.println(DesUtil.getInstance("lushuaiyin").getEnCodeString("hello"));
// LDewGAZkmWHeYFjBz56ylw==
// :
System.out.println(DesUtil.getInstance("lushuaiyin").getDecodeString("LDewGAZkmWHeYFjBz56ylw=="));
// hello
//
System.out.println(DesUtil.getInstance("suolong").getEnCodeString("hello"));
// /RLowOJ+Fr3KdMcdJeNatg==
System.out.println(DesUtil.getInstance("suolong").getDecodeString("/RLowOJ+Fr3KdMcdJeNatg=="));
// hello
// , :
System.out.println(DesUtil.getInstance("suolong").getDecodeString("LDewGAZkmWHeYFjBz56ylw=="));
}
private SecretKey key=null;//
// , DES,DESede,Blowfish,AES
//
private static String algorithm="AES";
private static DesUtil desUtil=null;
public DesUtil(){}
public static DesUtil getInstance(String strKey){
desUtil=new DesUtil();
desUtil.createKey(strKey);
return desUtil;
}
/**
* algorithm
* @param strKey
*/
public void createKey(String strKey){
try{
KeyGenerator kg=KeyGenerator.getInstance(DesUtil.algorithm);
byte[] bt=strKey.getBytes("UTF-8");
SecureRandom sr=new SecureRandom(bt);
kg.init(sr);
this.setKey(kg.generateKey());
}catch(Exception e){
}
}
/**
* ,
* cipher
* @param dataStr
*/
public String getEnCodeString(String dataStr){
byte[] miwen=null;//
byte[] mingwen=null;//
Cipher cipher;
String result="";//
try{
mingwen=dataStr.getBytes("UTF-8");
cipher=Cipher.getInstance(DesUtil.algorithm);
cipher.init(Cipher.ENCRYPT_MODE, this.getKey());
miwen=cipher.doFinal(mingwen);
BASE64Encoder base64en = new BASE64Encoder();
result=base64en.encodeBuffer(miwen);// , ,
// result=byte2hex(miwen);// 2C:37:B0:18:06:64:99:61:DE:60:58:C1:CF:9E:B2:97
}catch(Exception e){
e.printStackTrace();
}
return result;
}
/**
* ,
* @param codeStr
* @return
*/
public String getDecodeString(String codeStr){
BASE64Decoder base64De = new BASE64Decoder();
byte[] miwen=null;
byte[] mingwen=null;
String resultData="";//
Cipher cipher;
try{
miwen=base64De.decodeBuffer(codeStr);
cipher=Cipher.getInstance(DesUtil.algorithm);
cipher.init(Cipher.DECRYPT_MODE, this.getKey());
mingwen=cipher.doFinal(miwen);
resultData = new String(mingwen,"UTF-8");
}catch(Exception e){
return " , !";
}
return resultData;
}
//
public String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
if (n < b.length - 1)
hs = hs + ":";
}
return hs.toUpperCase();
}
public SecretKey getKey() {
return key;
}
public void setKey(SecretKey key) {
this.key = key;
}
public static String getAlgorithm() {
return algorithm;
}
public static void setAlgorithm(String algorithm) {
algorithm = algorithm;
}
}
実行結果:
LDewGAZkmWHeYFjBz56ylw==
hello
/RLowOJ+Fr3KdMcdJeNatg==
hello
, !
PS:暗号解読に興味のある友達は、当駅のオンラインツールも参照できます。オンラインDES暗号化/復号ツール:
http://tools.jb51.net/password/des_アンコール
テキストオンライン暗号解読ツール(AES、DES、RC 4などを含む):
http://tools.jb51.net/password/txt_アンコール
MD 5オンライン暗号化ツール:
http://tools.jb51.net/password/CreateMD5Password
オンラインハッシュ/ハッシュアルゴリズム暗号化ツール:
http://tools.jb51.net/password/hash_encrypt
オンラインMD 5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160暗号化ツール:
http://tools.jb51.net/password/hash_md 5_share
java関連の内容についてもっと興味がある読者は、当駅のテーマを調べてもいいです。「Java数学演算技術のまとめ」、「Javaデータ構造とアルゴリズム教程」、「Java文字と文字列操作テクニックのまとめ」、「Java操作DOMノード技術のまとめ」、「Javaキャッシュ操作テクニックのまとめ」
本論文で述べたように、皆さんのjavaプログラムの設計に役に立ちます。