Я пытался создать своего рода кодировку One Time Pad в свободное время, чтобы немного научиться.Моя идея состояла в том, чтобы преобразовать входные данные (которые должны быть зашифрованы) в строку битов.Затем у меня есть пароль (также в виде строки битов), и вход зашифровывается с помощью XOR.например, pw = 101001, вход = 11001, затем enc = 0110. Моя проблема сейчас:
Как работает binary.append((val&128)==0 ? 0 : 1);
?Я думаю, что могу переписать это как
if(val&128)==0{
binary.append(0);
}else{
binary.append(1);
}
Но как 2 числа (val & 128) могут равняться одному числу (0)?Это мой код:
String s ="foo";
byte[] bytes = s.getBytes();
StringBuilder binary = new StringBuilder();
for(byte[] b : bytes){
int val = b;
for(int i=0; i<8; i++){
binary.append((val&128)==0 ? 0 : 1);
val <<= 1;
}
}
System.out.println(s + " to binary: " + binary)
Спасибо за помощь:)