我一直在尝试在空闲时间创建一种 One Time Pad 加密以学习一些知识。我的想法是将输入(应加密)转换为位字符串。然后我有一个密码(也是一串位),输入被 XOR 加密。例如 pw= 101001 ,input= 11001,然后 enc= 0110。我现在的问题是:
如何binary.append((val&128)==0 ? 0 : 1);
工作?我想我可以将其重写为
if(val&128)==0{
binary.append(0);
}else{
binary.append(1);
}
但是 2 Numbers (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)
感谢帮助:)
该&
运算符接收两个整数值并按位比较它们,因此它为您提供另一个整数值,该值是通过在它们之间以二进制格式写入两个 int 值并将每个位与 AND 运算进行比较而生成的。
结果再次是一个二进制数,它被转换回一个以 10 为基数的整数。因此,您可以将其与整数 0 进行比较。
示例:
15 & 7 = 7:
1111 (15) & 0111 (7) = 0111 (7)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句