我的密码学课程中遇到了问题:
现在,我想的不是做烦人的笔/纸工作,而是编写一些Java代码。我知道如何使用Java将十六进制字符串转换为二进制字符数组,但我需要知道如何做,删除这些二进制值的最低有效位。
这是我为了找到二进制值而编写的代码:
public static void main(String[] args) {
String key = "5B5A57676A56676E"; //hexadecimal key
char[] keyCharArray = key.toCharArray();
for (int i = 0; i < key.length(); i++) {
System.out.print(HexToBinary((keyCharArray[i]))+",");
}
}
public static String HexToBinary(char Hex) {
int i = Integer.parseInt(Character.toString(Hex), 16);
return String.format("%04d", Integer.parseInt(Integer.toBinaryString(i)));
}
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
如果你有一个byte b
,你可以获得boolean lsb = (b & 1) == 1;
的最低位。如果lsb为真,则lsb为1 ...否则为0.要删除lsb,请将b
右移{(b >>= 1
)。
答案 1 :(得分:0)
1st - 使用长/长64位
第二 - 取消最后一位并获得剩下的7位 - 你可以换1(或除以2)
将密钥分成8个字符
将每个char除以2(这将删除该位)
然后将8个字符与7位一起放在一个长(56位)
中