이제 Java에 부호없는 바이트가 없다는 것을 알았지 만,이 문제를 해결할 방법이 확실하지 않습니다. java에서 SHA256 해시를 구현하려고하는데 메시지를 512 비트로 변환하는 중입니다. 나머지 = 7 결과 INT는 128이지만,이 자바 바이트에 로그인 그래서 바이트 대신의 0xF0의 0x80으로 될 경우Java 정수/부호없는 바이트 두 배
int l = bytes.length; //total amount of bytes in the original message
int k = 0;
while((l+1+k) % 512 != 448) {
k++;
}
//k is the total amount of 0's to be padded
int rest = k % 8; //get the amount of 0's to be added in the byte with the 1
byte tmp =(byte) Math.pow(2, rest);
따라서 키 명령은 마지막 행이다. Java에서 어떻게 이것을 수행 할 수 있습니까?
누구든지이 부분을 구현하는 방법에 대한 아이디어가 있으면 알려 주시기 바랍니다.
128은 왜 '0xF0'입니까? – khelwood
똑같이'rest'는 0부터 7까지의 숫자 여야합니다. 모두 양수이며'byte' 범위 안에 들어갑니다. 나는 너에게 또 다른 문제가 있다고 생각한다. – markspace
단지 기록 용입니다. 이것은 학습 목적을위한 것입니까? 당신은 자신의 암호를 구현하는 것이 현실 세계에서 가장 나쁜 생각 일 가능성이 가장 높습니다. – GhostCat