在我的项目中,我xor'ed(对不起但不知道正确的动词)字符串并用RSA-1024加密。现在我有一个 xored和加密字符串,如:
994624f87a00f4c3066c2a2d38917fe4971be8ad4e6ba58d14cc8b27ab8db84ec2a577f7bda1839cb9843ce6f738f51807ba127b775725ef14e3cea61091bf1fdcfa1372e1975f1b9418b0ad396bea5e7d2a832b8c4161e3b0595f7ed7e57eeda0ad8ab7a7268c871ab4e6d13e3caccaa8b54740ec2d1b8d23d835ff77c78161
当我尝试用...解密时
Cipher cipher2 = Cipher.getInstance("RSA");
cipher2.init(Cipher.DECRYPT_MODE, priKey);
byte[] cipherData = cipher2.doFinal(data);
它返回非逻辑字符,如
我知道原因;当具有正确的ascii对应物的位被xored时,答案可能没有ascii对应物。所以我试图找到一个不同的格式,如二进制在doFinal()内使用。A- A- A- A- A- A- A- A - ????????
期待回答,
提前致谢。
答案 0 :(得分:0)
你为什么要对明文进行异或?无论如何你要加密它,XORing似乎没有做任何事情。
除此之外cipherData
是一个误导性的名称:这实际上是你的(XORd)明文,因为你是从解密步骤中得到的。
如果继续使用XOR方案,则需要在尝试将它们解码为String之前再次对这些字节进行异或。当您执行该步骤时,您可能需要指定所使用的编码,例如UTF-8,以确保安全。