存储aes加密数据的最佳方式



什么是(本地)存储已使用AES加密加密的数据的最佳/安全/易于实现的方法?似乎没有一个适当的指南或标准的方式来存储数据,但在看了一些使用AES加密的项目后,这些似乎是最常见的格式:

  • XML>
  • 文本文件
  • csvfor csv - AES加密数据可能包含','逗号,这可能会导致csv的问题

    用于文本文件—如果每个项目有多个数据列,数据存储会像这样吗?

    item directory
    |
    |__ item's encrypted key1.txt
    |
    |__ item's encrypted key2.txt
    

    在解密数据时,程序应该解密实际文件还是将文件的内容存入内存然后再解密?

    第一种方法似乎是不安全的,如果应用程序在文件被解密后由于某种原因崩溃,那么数据将被暴露,当重新启动并试图解密已经解密的数据时,它将导致问题。

    存储数据的最佳方式是什么?写数据应该如何实现(最好是java)

    加密的数据是一袋字节。它没有结构,不能呈现为文本。

    最明显的存储方式是将存储为一组字节:取你的加密数据,打开FileOutputStream/Files.newOutputStream,并写入。逐字.

    .txt文件中加密数据是愚蠢的。CSV甚至更疯狂。没有结构-如果你能在加密数据中检测到除了随机噪声之外的任何东西,那么它就没有加密(也许"稍微混淆了一点,任何严肃的黑客都不会受到丝毫困扰",让我们不要称之为"加密")。

    你也不能压缩它(如果你想压缩数据,先压缩,然后)加密它。如果你加密了一些东西,如果你压缩它,它变得更小,你的加密算法被破坏了!)-因此,只要开始写。

    如果你需要通过一个不允许字节,只允许文本的通道传输加密数据,那么如果你使用不稳定的字符或编码,通常它允许的文本也是有问题的,并且在引号中也不允许。这个问题的行业标准解决方案是使用Base64将任意一串字节转换为安全的ASCII字符。请注意,这是低效的:X字节的输入变成了一个(X*4/3)字节的base64字符串,例如,它无缘无故地增长了33%。

    如果你需要在电子邮件中发送这些东西,这是一个好主意,你希望人们能够在编辑器中打开文件并将其复制/粘贴到web表单中,它需要在HTML文档的data-x=""属性中,你想在HTTP头中发送它,等等。

    用于文本文件—如果每个条目有多个数据列,数据存储是否看起来像这样?;

    听起来好像你有一些结构化数据,比如一堆代表一个人的数据,比如:

    {
    "dob": "2000-01-01",
    "name": "Joey Bloggs",
    "parents": [
    "Anna Bloggs",
    "Jane Bloggs"],
    "hobbies": [
    {"name": "Painting", "started": "2020-05-01"}
    ]
    }
    

    ,你想通过保留结构来加密它,但只是加密其中的每个"值"。比如:

    {
    "dob": "AJDNDA21489234JDASD9234",
    "name": "FDJFFDJADIDN235AFSFDS1243",
    "parents": [
    "SDJDDHRCDODFJF234",
    "D234ADFS9IT9CX"],
    ... and so on
    }
    

    这是一个非常糟糕的主意. 这个结构本身就给了我大量的信息(我不知道这是谁,但我知道他们有一个爱好和两个父母)。我甚至大概知道父母的名字有多长!

    取整个blob并加密整个

    相关内容

    • 没有找到相关文章

    最新更新