안녕하세요 여러분, 제가 약간의 도움을 얻을 수 있는지 알고 싶습니다. 바이트 배열 내부에서 16 진수로 계산하려고합니다. 무슨 일을하는지 내가 8 자리 16 진수 숫자의 형태로 일반 텍스트와 같은 형태로뿐만 아니라 키의 처음 4 숫자로 암호 텍스트입니다. 그리고 무언가를 통해 열쇠를 해독하기 위해 DES를 사용하려고합니다.바이트 배열의 16 진수를 순환합니다.
[A3 BB 12 44 __ __ __ __]
그리고 난 그것이 내가 생각 같이 시작하려는 :
내 키는 다음과 같습니다
[A3 BB 12 44 00 00 00 00]
다음
[A3 BB 12 44 00 00 00 01]
등등. 나는 실제로 헥스 계산 방법을 모른다. 그것에서 바이트 배열의 내부!
어떤 도움을 많이 받으실 수 있습니다!
여기
여기
public static void findKey(){
byte [] keyBytes = null;
byte [] pt;
byte [] ct;
codeBreaker KEY = new codeBreaker(new byte[]{(byte)0x01, (byte)0x23, (byte)0x45, (byte)0x67, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00}, 2);
String plaintext = "Plaintxt";
ct = new byte [] {(byte)0x4A, (byte)0xC4, (byte)0x55, (byte)0x3D, (byte)0xB3, (byte)0x37, (byte)0xCA, (byte)0xB3};
//convert the plain text "Plaintxt" into a hex byte array
String ptHex = asciiToHex(plaintext);
pt = getBytes(ptHex);
//keyBytes = KEY.inc()
//my attempt
/*while(!isKey(pt,keyBytes,ct)){
KEY.inc(); // something like increase the key by 1 and send t back in.
}
*/
//this is your original while loop
/*while (KEY.inc()) {
byte[] bytes = KEY.getBytes();
for (byte b: bytes) {
System.out.printf("%02X ", b);
}
System.out.println();
}
*/
//Final outputs for the findKey method
System.out.println(" Plain Text In Hex Is:");
printByteArray(pt);
System.out.println();
System.out.println(" The Cipher Text Is:");
printByteArray(ct);
System.out.println();
}
와 (내가 주위에 더 나은 소송 내 프로그램에 사물의 이름의 일부를 변경) 키를 찾을 수 있습니다 많은 도움 편집 된 후 당신이 와서 물건입니다
public codeBreaker(byte[] keyAr, int startIndex) {
this.key = keyAr;
this.startIndex = startIndex;
}
public boolean inc() {
int i;
for (i = key.length-1; i >= startIndex; i--) {
key[i]++;
if (key[i] != 0)
break;
}
// we return false when all bytes are 0 again
return (i >= startIndex || key[startIndex] != 0);
}
public byte[] getBytes() {
return key;
}
내가 모두 하나의 클래스에 넣고 나머지 메소드와 함께 codeBreaker라고 부릅니다. (그러나 다른 것들은 없습니다. 이 특정 부분과 관련이 있음)
* "나는 약간의 지적 도움을받을 수 있는지 어이 궁금 해서요." 우리는 모두 "바보 같은 프로그래머"입니다 ...-) :-) :-) –
@StephenC : 직접 이야기하십시오. 나는 러시 림보 (Lush Limbaugh)와 도널드 트럼프 (Donald Trump)와 함께 저기있는 지적 무거운 체중을 생각한다. –
심각하게도, 바이트는 바이트의 문자열 표현이기 때문에 16 진수인지 여부를 알지 못하거나 신경 쓰지 않습니다. 당신이하려는 일에 대해 더 많은 배경 지식을 줄 수 있습니까? 바이트 배열이 어디서 왔는지, for 루프 등으로 반복 할 수없는 이유는 무엇입니까? –