Eclipse에서 Java를 실행하고 있습니다.Java에서 Blowfish 암호화 알고리즘에 타임 스탬프를 어떻게 추가 할 수 있습니까?
나는 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);
}
}
CBC에 무작위 IV가있는 경우 매번 다를 수 있습니다. 나는 혼란스러워. – gd1
CBC IV는 현재 무작위가 아닙니다. CBC IV는 무작위로 어떻게 만들 수 있습니까? – user717236
@ user717236 간단하게, 당신은'SecureRandom' 인스턴스를 생성합니다 (매개 변수없는 생성자를 사용합니다), 그리고 나서 당신은 암호의 블록 크기를 가진'byte []'를 만듭니다. 그런 다음'SecureRandom.nextBytes()'를 사용하여 바이트 배열을 채 웁니다. 그런 다음 설정해야합니다. IV를 암호문에 선 펜딩 할 수 있습니다. 이것은 꽤 일반적인 관행입니다. –