gpt4 book ai didi

java - XOR - 3行的解释

转载 作者:行者123 更新时间:2023-12-01 19:25:17 24 4
gpt4 key购买 nike

我们正在做一个学校项目,我们需要逐行解释代码。我们需要解释以下三行:

// TODO: This is where the magic of XOR is happening. Are you able to explain what is going on?
for (int i = 0; i < rawString.length(); i++) {
thisIsEncrypted.append((char) (rawString.charAt(i) ^ key[i % key.length]));
}

有人可以帮助我们吗?这是我们需要完成的最后几行。

提前谢谢您! :-)

最诚挚的问候,卡斯帕

最佳答案

如果你看看按位运算异或它会这样做:

0^0 = 0
1^0 = 1
0^1 = 1
1^1 = 0

这对于加密非常有用,因为如果您有:

original_value ^ key = encrypted_value

然后可以通过使用相同 key 进行异或运算将加密的_值转换回原始_值:

encrypted_value ^ key = original_value

因此,在您的示例中,您有一个原始字符串,然后是加密字符串,为了对原始脚本中的每个字符进行加密,它使用与 key 中的字符进行异或。由于 key 长度与原始字符串长度不同,因此它使用模数 (%) 来获取 key 的相应位置。例如,如果它们的 key 长度为 3 个字符,则原始字符串中的每三个字符将使用 key 中的相同字符进行编码。

基本上,执行相反的调用会将加密的字符串传输回原始字符串。举例说明:

    String rawString="Give me A on my homework!";
char[] key="OH no!".toCharArray();
StringBuilder thisIsEncrypted=new StringBuilder();

for (int i = 0; i < rawString.length(); i++) {
thisIsEncrypted.append((char) (rawString.charAt(i) ^ key[i % key.length]));
}

// Now we have encrypted it - lets decrypt

rawString=thisIsEncrypted.toString();
thisIsEncrypted=new StringBuilder();
for (int i = 0; i < rawString.length(); i++) {
thisIsEncrypted.append((char) (rawString.charAt(i) ^ key[i % key.length]));
}
System.out.println("This was encrypted and then decrypted: "+thisIsEncrypted);

关于java - XOR - 3行的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59318137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com