在doFinal()中使用二进制数据-javax.crypto.Cipher

在doFinal()中使用二进制数据-javax.crypto.Cipher,java,binary,rsa,encryption,Java,Binary,Rsa,Encryption,在我的项目中,很抱歉,我不知道正确的动词是字符串,并用RSA-1024加密。现在我有一个XORD和加密字符串,如: 994624F87A00F4C3066C2A2D38917FE4971BEA4E6BA58D14C8B276AB8DB84EC2A577F7BD1839CB9843CE6F738F51807BA127B775725EF14E3CEA61091BF1DFCFA1372E1975F1B9418B0AD396BEA7D2A832B8C4161E3B0595F7ED7E5E5E5E5E5E

在我的项目中,很抱歉,我不知道正确的动词是字符串,并用RSA-1024加密。现在我有一个XORD和加密字符串,如:

994624F87A00F4C3066C2A2D38917FE4971BEA4E6BA58D14C8B276AB8DB84EC2A577F7BD1839CB9843CE6F738F51807BA127B775725EF14E3CEA61091BF1DFCFA1372E1975F1B9418B0AD396BEA7D2A832B8C4161E3B0595F7ED7E5E5E5E5E5E5A07AD8AB7A7268C871AB4E6B127B77577CAA754EC7B17B17B17B17CAA547474747474EC2D8D2835FF7778161

当我试图用

Cipher cipher2 = Cipher.getInstance("RSA");
cipher2.init(Cipher.DECRYPT_MODE, priKey);
byte[] cipherData = cipher2.doFinal(data);
它返回非逻辑字符,如

-?-?-?-?-?-

我知道原因;当具有正确ascii对应项的位被异或时,答案可能没有ascii对应项。因此,我试图找到一个不同的格式,如二进制使用内部doFinal

期待着答案


提前谢谢。

你为什么要对明文进行异或操作?如果要对其进行加密,XORing似乎无法实现任何功能

除此之外,cipherData还有一个误导性的名称:这实际上是您的XORd明文,因为您是从解密步骤获得它的


如果继续使用XOR方案,则需要在尝试将这些字节解码为字符串之前再次对其进行XOR。执行该步骤时,为了安全起见,可能需要指定使用的编码,例如UTF-8。

为什么要对明文进行异或运算?如果要对其进行加密,XORing似乎无法实现任何功能

除此之外,cipherData还有一个误导性的名称:这实际上是您的XORd明文,因为您是从解密步骤获得它的


如果继续使用XOR方案,则需要在尝试将这些字节解码为字符串之前再次对其进行XOR。在执行该步骤时,为了安全起见,您可能需要指定所使用的编码,例如UTF-8。

因为这是一个术语项目,xoring是一项要求。不过,我对此并不满意:我知道我必须对解密后的文本进行异或运算才能到达原始消息。问题是,;我无法正确获取解密文本,因为cipher.dofinaldata没有返回正确的输出…@Ismail Kuyu请尝试跳过XOR步骤并验证加密/解密是否正常工作。因为它只是字节数据,这不重要,但在调试时尽可能减少任何复杂度,然后在需要时再添加回去也无妨。@Ismail Kuyu,你确定数据是你的密文吗?这个名字听起来像是原始的明文。你能举一个最小的例子来重现你的问题吗?嘿,非常感谢你的帮助。虽然我说这是一个要求,但我还是绕开它,使用mode函数而不是xor:btw,en/解密工作正常,因为我在xor之前就做过。再次感谢您的帮助…因为这是一个长期项目,xoring是一个需求。不过,我对此并不满意:我知道我必须对解密后的文本进行异或运算才能到达原始消息。问题是,;我无法正确获取解密文本,因为cipher.dofinaldata没有返回正确的输出…@Ismail Kuyu请尝试跳过XOR步骤并验证加密/解密是否正常工作。因为它只是字节数据,这不重要,但在调试时尽可能减少任何复杂度,然后在需要时再添加回去也无妨。@Ismail Kuyu,你确定数据是你的密文吗?这个名字听起来像是原始的明文。你能举一个最小的例子来重现你的问题吗?嘿,非常感谢你的帮助。虽然我说这是一个要求,但我还是绕开它,使用mode函数而不是xor:btw,en/解密工作正常,因为我在xor之前就做过。再次感谢你的帮助。。。