0

私はEclipseでJavaを実行しています、fyi。

Blowfishを使用して暗号化され、もう一方の端で復号化された平文があります。同じ平文に対して暗号化されたテキストが毎回異なるように、タイムスタンプを追加したいと思います。

Javaのblowfishアルゴリズムにタイムスタンプを追加して、別の端で復号化できるようにするにはどうすればよいですか?

ありがとうございました。

これが私の暗号化コードです:

import BlowfishJ.*;


public class EncryptBlowFishTest {
/**
 * @param args
 */
public static void main(String[] args) {

    long CBCIV = 0x0x765904567324590L;

    String pwd = "1234567890";
    int pwdLength = password.length();

    // generate key
            byte[] testkey = new byte[5];


            for (int i = 0; i < testkey.length; i++)
                testkey[i] = (byte) (i + 1);


    BlowfishCBC blowfishcbc = new BlowfishCBC(testkey, 0, testkey.length, CBCIV);

    byte[] tempBuffer = pwd.getBytes();

    // align to the next 8 byte border
            byte[] msgBuffer;
            int n = pwdLength & 7;

            if (n != 0) {
                msgBuffer = new byte[(pwdLength & (~7)) + 8];
                System.arraycopy(tempBuffer, 0, msgBuffer, 0, pwdLength);

                for (int i = pwdLength; i < msgBuffer.length; i++)
                    msgBuffer[i] = 0;
            }
            else {
                msgBuffer = new byte[pwdLength];
                System.arraycopy(tempBuffer, 0, msgBuffer, 0, pwdLength);
            }

            byte[] showCBCIV = new byte[BlowfishCBC.BLOCKSIZE];
            blowfishcbc.getCBCIV(showCBCIV, 0);

            blowfishcbc.encrypt(msgBuffer, 0, msgBuffer, 0, msgBuffer.length);

            String encryptedPwd = BinConverter.bytesToBinHex(msgBuffer);

            System.out.println(encryptedPwd);

    }
}
4

3 に答える 3

3

タイムスタンプをプレーンテキストの最初の部分にしてから、すべてを暗号化します。

于 2012-09-14T21:11:38.133 に答える
2

代わりに、ランダムIVを使用してください。適切な長さのバイトのランダムシーケンスを生成し、それをIVとして使用するだけです。暗号化されたメッセージとともに、暗号化されていないIVを送信します。

ランダムIVの使用は標準的な方法です(PKCS#5)。

于 2012-09-14T21:16:03.290 に答える
1

System.currentTimeMillis()zmbqと同様に、暗号化する前にテキストに追加するだけで済みます。次に、復号化するときにlongを削除します。削除しやすくするために、区切り文字を使用することをお勧めします。

于 2012-09-14T21:21:19.777 に答える