如何编码/存储加密邮件

时间:2014-05-16 04:10:44

标签: encryption base64 aes public-key-encryption file-format

我正在使用AES和RSA进行加密。 加密阶段完成后,我需要传输两个数据。

  1. AES256加密消息 - AES256(消息,密钥)
  2. 使用RSA公钥的AES256对称密钥加密 - RSA(密钥)
  3. 由于这些数据是字节数组,我自然觉得我应该对其进行Base64编码。

    这些数据只是从我自己的代码中加密和解密,因此Base64(RSA(Key)) + "\r\n" + Base64(AES256(message,Key))“有效”,但是我应该使用这个标准吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Oleg建议的标准化容器格式。众所周知的是CMS(源自PKCS#7)和PGP。 XML加密也是可能的,但我个人会尝试避免它,除非您非常确定您了解XML加密的安全性。 Sun和Apache都没有 - 仅举几例。

对于Base64,如果您认为您的密文在系统中的任何位置用作文本,则您应该只对64进行任何编码。如果您不对其进行编码,则很可能会丢失数据。对于加密,丢失一些字节大约等于丢失所有数据。不要忘记密文看起来像随机数据,所以字节可以有任何值,包括“有趣”值,如007F,空格,制表符等等。(这只是针对ASCII的)。

请注意,对于传输协议,简单地加密/解密数据通常是不够的。您还需要提供完整性/真实性(例如MAC或HMAC)。