我正在尝试使用异或加密对字符串进行编码,并使用byte array
作为密钥:
String encodedString = myString XOR myKey
我没有太多的密码学经验,所以我还没有找到一种方法来实现这一点。
作为这个问题的更新,我发现myKey
也是一个字符串,并且与myString
具有相同的长度
发布于 2019-05-10 03:49:03
终于明白了!
希望这对其他人有用。
这就是对我有效的方法(2个字符串内的XOR):
public static String xorHex(String a, String b) {
// TODO: Validation
char[] chars = new char[a.length()];
for (int i = 0; i < chars.length; i++) {
chars[i] = toHex(fromHex(a.charAt(i)) ^ fromHex(b.charAt(i)));
}
return new String(chars);
}
private static int fromHex(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
}
if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
}
if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
}
throw new IllegalArgumentException();
}
private static char toHex(int nybble) {
if (nybble < 0 || nybble > 15) {
throw new IllegalArgumentException();
}
return "0123456789ABCDEF".charAt(nybble);
}
https://stackoverflow.com/questions/56032759
复制相似问题