Javaは簡単にDES暗号解読アルゴリズムを実現する
2957 ワード
Javaは簡単にDES暗号解読アルゴリズムを実現する
文書ディレクトリ Java単純実装DES暗号解読アルゴリズム DESアルゴリズム紹介 関連javaクラス を実現コード実装 DESアルゴリズムの紹介
DEC暗号化アルゴリズムは、指定された鍵を用いて、暗号の長さに応じてデータを切り出し、データブロックに分割し、鍵と複雑なシフト、算数演算またはデータ処理などの操作を行い、特定の暗号のみが解けるデータを形成する対称暗号化に属する.暗号化と復号化は同じ鍵、すなわち暗号化鍵が復号鍵に等しく、暗号化鍵と復号鍵は互いに押し倒すことができる.
関連javaクラスの実装
1.Key:KeyクラスはJava暗号化のすべての親2.SecureRandom:セキュリティポリシーグループの指定3.KeyGenerator:アルゴリズムオブジェクトの生成4.BASE 64 EncoderとBASE 64 Decoder:base 64ビットでbyteとStringの相互変換を完了5.Cipher:これは重要クラスJava/Androidがどのように暗号化するかには、CipherというクラスCipher cipher=Cipher.getInstance(「アルゴリズム名」)cipher.init(暗号化/復号モード、Key秒)、Cipher.DECRYPT_MODE復号化;Cipher.ENCRYPT_MODE暗号化:暗号化:cipher.init(Cipher.ENCRYPT_MODE,key);復号化:cipher.init(Cipher.DECRYPT_MODE,key);doFinal()メソッドを呼び出して単一ステップの暗号化または復号化データを完了する;複数のデータのセットであればupdata()を使用する必要がある;
コード実装
文書ディレクトリ
DEC暗号化アルゴリズムは、指定された鍵を用いて、暗号の長さに応じてデータを切り出し、データブロックに分割し、鍵と複雑なシフト、算数演算またはデータ処理などの操作を行い、特定の暗号のみが解けるデータを形成する対称暗号化に属する.暗号化と復号化は同じ鍵、すなわち暗号化鍵が復号鍵に等しく、暗号化鍵と復号鍵は互いに押し倒すことができる.
関連javaクラスの実装
1.Key:KeyクラスはJava暗号化のすべての親2.SecureRandom:セキュリティポリシーグループの指定3.KeyGenerator:アルゴリズムオブジェクトの生成4.BASE 64 EncoderとBASE 64 Decoder:base 64ビットでbyteとStringの相互変換を完了5.Cipher:これは重要クラスJava/Androidがどのように暗号化するかには、CipherというクラスCipher cipher=Cipher.getInstance(「アルゴリズム名」)cipher.init(暗号化/復号モード、Key秒)、Cipher.DECRYPT_MODE復号化;Cipher.ENCRYPT_MODE暗号化:暗号化:cipher.init(Cipher.ENCRYPT_MODE,key);復号化:cipher.init(Cipher.DECRYPT_MODE,key);doFinal()メソッドを呼び出して単一ステップの暗号化または復号化データを完了する;複数のデータのセットであればupdata()を使用する必要がある;
コード実装
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
//
@SuppressWarnings("restriction")
public class DESUtil {
private static Key key;
// key
private static String KEY_STR = "myKey";
private static String CHARSETNAME = "UTF-8";
private static String ALGORITHM = "DES";
static {
try {
// DES
KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM);
// SHA1
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
//
secureRandom.setSeed(KEY_STR.getBytes());
// SHA1
generator.init(secureRandom);
//
key = generator.generateKey();
generator = null;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//
public static String getEncryptString(String str) {
BASE64Encoder base64encoder = new BASE64Encoder();
try {
// utf-8
byte[] bytes = str.getBytes(CHARSETNAME);
//
Cipher cipher = Cipher.getInstance(ALGORITHM);
//
cipher.init(Cipher.ENCRYPT_MODE, key);
//
byte[] doFinal = cipher.doFinal(bytes);
//byte to encode String
return base64encoder.encode(doFinal);
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException(e);
}
}
//
public static String getDecryptString(String str) {
// byte[] String
BASE64Decoder base64decoder = new BASE64Decoder();
try {
// String byte
byte[] bytes = base64decoder.decodeBuffer(str);
//
Cipher cipher = Cipher.getInstance(ALGORITHM);
//
cipher.init(Cipher.DECRYPT_MODE, key);
//
byte[] doFinal = cipher.doFinal(bytes);
//
return new String(doFinal, CHARSETNAME);
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException(e);
}
}
//
public static void main(String[] args) {
System.out.println(getEncryptString("root"));
// System.out.println(getDecryptString("WnplV/ietfQ="));
}
}