字符的Java反编译器含义-“ \ 001”

时间:2019-03-03 09:44:42

标签: java

我们不得不对文件进行反编译和解密。当放入Java反编译器时,我有一个问题。

最后一个string decryptionkey = "something"。还有一个功能可以循环检查用户输入 userresponse.charat(i) - '\001' != decryptionkey.CharAt(i)。 我的问题是- '\001'是做什么的?如果解密密钥是ABCD,那么逻辑上答案应该是ABCD?

我尝试过,但是没有运气。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

首先,您对引号的理解不正确。您需要单引号,然后再次-完全没有引号会使事情变得更加清晰。

所以您可以这样做:

//userresponse.charat(i) - "\001" //wrong syntax
userresponse.charat(i) - '\001';

或者您这样做:

//userresponse.charat(i) - "\001" //wrong syntax
userresponse.charat(i) - 1;

因此,您的问题更容易回答。它在用户输入中使用char并减去一个。

这是一个非常弱的加密。每个字母都会加密为字母,而不是字母。因此,“ BCDE”被加密为“ ABCD”。

字母“ A”中的第一个字母是特殊的:虽然以相同的方式加密,但“ A”之前的字母不是字母,而是“ @”。因此,“ ABCD”将被加密为“ @ABC”。并且更清楚地将“ EBCD”加密为“ DABC”。

userresponse.charat(i) - '\001' != ecryptionkey.CharAt(i)

现在更有意义了吗?它选择位置i处的字母,然后对其“加密”,并将其与密码“ decryptionkey”的位置i中的字母进行比较。

如果您遍历所有字母并且全部匹配-用户确实输入了与创建密码“ decryptionkey”相同的纯文本。换句话说,如果一个字母不匹配,则用户将得到错误的纯文本。那就是“!=”的含义。

让我们看一个例子:

说用户输入“ BCD”。

在第一步(i = 0)中,它查看第一个字母“ B”并减去1,得到“ A”。现在,它将“ A”与解密密钥中的第一个字母进行比较。

在第二步(i = 1)中,将查看第二个字母'C'并减去1,得到'B'并将其与解密密钥中的第二个字母匹配。

在第三步(i = 2)中,将查看第三个字母'D'并减去1得出'C'并将其与解密密钥中的第三个字母匹配。

如果一个字母不匹配,它将失败(因此为“!=”)。

  

对于问题“如果解密密钥例如是ABCD,那么   逻辑上答案应该是ABCD?”

     

不!如果解密密钥是   例如“ ABCD”,那么逻辑上答案应该是“ BCDE”!如   答案的每个字母都减去一个。