繁体   English   中英

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

[英]Using binary data inside doFinal() - javax.crypto.Cipher

在我的项目中,我对字符串进行了xor(抱歉,但不知道正确的动词),并使用RSA-1024进行了加密。 现在,我有一个经过加密的加密字符串,例如:

994624f87a00f4c3066c2a2d38917fe4971be8ad4e6ba58d14cc8b27ab8db84ec2a577f7bda1839cb9843ce6f738f51807ba127b775725ef14e3cea61091bf1fdcfa1372e1975f1b9418b0ad396bea5e7d2a832b8c4161e3b0595f7ed7e57eeda0ad8ab7a7268c871ab4e6d13e3caccaa8b54740ec2d1b8d23d835ff77c78161

当我尝试用...解密时

Cipher cipher2 = Cipher.getInstance("RSA");
cipher2.init(Cipher.DECRYPT_MODE, priKey);
byte[] cipherData = cipher2.doFinal(data);

它返回非逻辑字符,例如

???????

我知道原因; 当具有适当ascii对应物的位被异或时,答案可能没有ascii对应物。 所以我试图找到其他格式,例如在doFinal()内部使用的二进制文件。

期待得到答案,

提前致谢。

您为什么要对纯文本进行XOR? 如果仍然要对其进行加密,那么XORing似乎无法完成任何工作。

除了cipherData之外, cipherData一个误导性的名称:这实际上是您的(XORd)明文,因为您是从解密步骤中获得的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM