1

Java で指定された DES を使用した暗号化と復号化の問題に取り組んでいます。かなり簡単に暗号化および復号化する方法をすでに理解しましたが、今は立ち往生しています。現在の問題については、平文と対応する暗号文 (8 16 進数のペアの形式である例: A5 33 1F ..) がありますが、キーの最初の 4 つの 16 進数ビットも持っています。私は実際にコードを求めているわけではありませんが、この問題にどのように取り組むかについてのアイデアです! 何でも役に立ちます!これは私の解読コードです(私が一生懸命働いていることを示すためにそれを含めただけです:))。みんなありがとう!

public static void decrypt(){
    Cipher cipher;
    SecretKeySpec key;
    byte [] keyBytes;
    byte [] pt;
    byte [] ct;
    String plaintxt;

    keyBytes = new byte [] {(byte)0xFE, (byte)0xDC, (byte)0xBA, (byte)0x98, (byte)0x76, (byte)0x54, (byte)0x32, (byte)0x10};
    key = new SecretKeySpec(keyBytes, "DES");
    ct = new byte [] {(byte) 0x2C, (byte) 0xE6, (byte) 0xDD, (byte) 0xA4, (byte) 0x98, (byte) 0xCA, (byte) 0xBA, (byte) 0xB9};

    try{
        cipher = Cipher.getInstance("DES/ECB/NoPadding");
        cipher.init(Cipher.DECRYPT_MODE, key);
        pt = cipher.doFinal(ct);
        printByteArray(pt);
        plaintxt = byteToHex(pt);
        hexToAscii(plaintxt);
    }
    catch(Exception e){
        e.printStackTrace();
    }

}
4

1 に答える 1

1

強引な。

平文と暗号文を一致させる復号化を取得するまで、(固定バイトが与えられた場合に)可能性のあるすべてのキーを列挙します。編集が必要です。ただし、平均して2 ^ 37回試行されるため、高速に実行されるとは思わないでください:)

DESには、より速くクラックできるプロパティがいくつかありますが、それらを実装するのは非常に困難であり、それらを学ぶことが期待されるとは思えません。ただし、興味がある場合は、http://en.wikipedia.org/wiki/Data_Encryption_Standard#Security_and_cryptanalysis

于 2013-02-10T00:44:59.753 に答える