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()を使用する必要がある;
    コード実装
    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="));
    	}
    }