如何在 DOTEV 文件中存储加密密钥?

所以我做了一个加密给定字符串的程序,
加密很简单,就是在DOTENV文件中存储ASCII字符值从32到126,一个是普通字符串存储32到126的值,另一个字符串存储普通字符串的混洗值


给定数据不是原始数据而是样本数据

存储在 DOTEV 文件中的数据:-

normalValue = " !\"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"

shuffledValue = "GKR6]^|hdv?\Icfs,TBrnt:C0F;p\"SA=U#l .&xXgZmq2Ozoi/_Nye[J{LW~1)`YHE-Qk'a !M*}bPj8D(9w5+3@"


正如你们所看到的,数据存储在双引号中,因为 DOTENV 不支持没有双引号的空格,并且因为 ASCII 值从 32 到 126 在两个列表中都包含双引号,我不得不添加一个反斜杠作为一个转义序列,因此字符串在 DOTENV 中注册,因此程序在加密或解密时往往会中断,像 hello 或什至这个段落这样的普通单词

“Linux 是一系列基于 Linux 内核的开源类 Unix 操作系统,Linux 内核是由 Linus Torvalds 于 1991 年 9 月 17 日首次发布的操作系统内核。”

工作正常,问题是有时我使用很长的文本来加密它在某些字母上会中断,这是因为我无法将原始数据存储在 DOTENV 文件中并获取它,我似乎无法找到解决此问题的方法,因为两者shuffled 和普通字符串需要有那个,任何人都可以帮助我吗?

hillingzhou 回答:如何在 DOTEV 文件中存储加密密钥?

我们不要将“加密”一词用于这个微不足道的方案,它可能会误导某些人认为黑客需要大约 5 毫秒以上才能破解此方案。

加密算法通常对字节进行操作。你对人物的特殊看法,但你写的东西肯定是为了学习一些东西(我当然希望这不是为了保护那些不应该阅读的人的信息,因为,哦,这不是方法),所以也许使用您用来在基于字符的存储系统中存储任意字节的技术很有用,并且极其限制了它支持的字符(您只能获得 ASCII 的子集)。有许多系统可以这样工作:配置文件、电子邮件、网址中的参数等等。

解决方案是base64。这以 75% 的效率对字节进行编码(您需要 4 个字符来存储 3 个字节),作为字符,这些字符几乎可以在所有内容中存活下来,并且可以在任何配置环境中使用。

Base64 类将为您处理转换。您处于一种奇怪的情况,即您的加密数据是字符串形式(它应该是字节形式!),但有一个简单的解决方案:

byte[] data = theString.getBytes(StandardCharsets.UTF_8);
String copyOfTheString = new String(data,StandardCharsets.UTF_8);

允许您从 String 转换为 byte[],反之亦然(这样您就可以将 byte[] 视为需要保存的数据,通过使用 Base64 将其编码为安全字符串,然后存储安全字符串).

注意:如果这不是一个学习练习,但您实际上是在试图保护信息不被窥探,那么基本的解决方案是像 AES256 这样的东西,它被嵌入到 Java 中,您可以找到它的免费和开放实现随意搜索网络。请注意,围绕使用这种算法的脚手架非常容易搞砸:该算法是安全的(如果地球上有人可以破解 AES 加密,那么他们一年可以轻松赚取数亿美元,如果他们打牌是正确的),但您对它的特殊用法可能不是。

本文链接:https://www.f2er.com/26040.html

大家都在问