我正在使用AES和RSA进行加密。 加密阶段完成后,我需要传输两个数据。
由于这些数据是字节数组,我自然觉得我应该对其进行Base64编码。
这些数据只是从我自己的代码中加密和解密,因此Base64(RSA(Key)) + "\r\n" + Base64(AES256(message,Key))
“有效”,但是我应该使用这个标准吗?
答案 0 :(得分:0)
您可以使用Oleg建议的标准化容器格式。众所周知的是CMS(源自PKCS#7)和PGP。 XML加密也是可能的,但我个人会尝试避免它,除非您非常确定您了解XML加密的安全性。 Sun和Apache都没有 - 仅举几例。
对于Base64,如果您认为您的密文在系统中的任何位置用作文本,则您应该只对64进行任何编码。如果您不对其进行编码,则很可能会丢失数据。对于加密,丢失一些字节大约等于丢失所有数据。不要忘记密文看起来像随机数据,所以字节可以有任何值,包括“有趣”值,如00
,7F
,空格,制表符等等。(这只是针对ASCII的)。
请注意,对于传输协议,简单地加密/解密数据通常是不够的。您还需要提供完整性/真实性(例如MAC或HMAC)。