如何在java中实现加密和解密



你好,我是java的新手,我想开发一个简单的登录应用程序,我必须在数据库中存储值。我已经阅读了许多加密和解密的示例,但我无法理解(可能是因为复杂的英语单词)什么是算法,密钥,填充以及为什么我们必须使用getBytes()。你能用简单的英语举例详细解释吗?哪种算法,填充对加密和解密最有用。键是预定义的固定词,还是我们可以设置自己的键。代码将非常有用。

我在这个主题上有点新手,所以我只是建议对密码进行哈希和加盐,我不能提供更多的见解,但我发现这个视频我发现在这个主题上非常广泛和有趣,iirc 他甚至展示了一些代码示例和示例,我建议从那里开始,并从中提出疑问!

事情的一般要点是获取原始密码字符串,并用它生成一个随机字符串,将两者连接起来,然后对这些组合形式进行哈希处理,并存储两者和随机字符串的哈希形式,然后,当那个人要登录时,你对插入的密码应用相同的盐,并将其与数据库中的哈希形式进行比较。

这比标准哈希具有优势,因为随机字符串对于每个用户都是唯一的,这意味着所有哈希,即使来自相同的密码,也会不同,而在正常哈希中,您会为相同的密码获得相同的哈希,因此,如果许多用户具有相同的密码,则更容易破解一些,在这种情况下无法做到这一点, 因为每个哈希键都是不同的。

所以请记住,生成随机字符串,连接它,散列连接字符串,将哈希和随机字符串存储到数据库中,并在登录时进行比较。

我真的很惊讶,有人在做错路之前问过。

但是,对于一个单一的答案,您问的内容非常广泛。我建议至少参加一些关于密码学的基础课程(我会重新认识Coursera。即使你没有完成你的课程,你也会得到很好的基础知识,为什么你应该做什么或不应该做什么。

简单的登录应用程序,我必须在数据库中存储值

如果你的值是指用户密码,那么使用慢速加盐哈希,请阅读 https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/

如果你想对某些值进行可逆加密,周围有很多例子,尽管并非所有例子都是安全的,

代码将非常有用

你可以检查 https://gusto77.wordpress.com/2017/10/30/encryption-reference-project/

什么是算法,键,填充以及为什么我们必须使用getBytes()。

我将从字节开始。加密适用于字节数组。因此,对于任何文本,您需要转换数据,密钥,密码,..到字节数组。加密的数据也是字节数组。

对于算法,填充,..我真的建议你自己多了解一下。

今天有一些密码(算法)被认为是安全的,正确使用它们更为重要。

仅举个例子,常用的是AES/CBC/PKCS5Padding

  • AES - 密码(加密算法)
  • 全血细胞计数 - 操作模式
  • PKCS5填充 - 填充以将数据适应所需的块长度

.键是预定义的固定词,还是我们可以设置自己的键。

密钥是你的秘密值,你需要相同的密钥来解密加密的数据,但密钥是你的,最好是随机的

最新更新