从MySQL数据库存储和检索salt

时间:2018-06-03 18:51:13

标签: java sql salt

我有一个PasswordEncryptionService,在那里我将我的密码哈希并将它们与用于哈希的盐一起保存在我的MySQL数据库中。我将我的密码和我的Salt保存为字节数组,我听说我可以将它们保存为SQL数据库中的varbinary类型。

这是我的代码:

options(setNames(list(Sys.Date()), paste0("a.", 1)))
getOption("a.1")
#[1] "2018-06-03"

现在我有一个单独的方法来检索盐,并登录此人,我应该将盐保存在不同的表中,还是可以保存在用户对象中?我应该将其保存为varbinary还是仅保存为常规varchar?

1 个答案:

答案 0 :(得分:1)

如果这是家庭作业,那么您可以将它们保存为varchar或二进制文件。无论哪位老师都很高兴。

现在,为了制作,我将哈希保存为binaryvarchar,而我(个人)更喜欢二进制。作为二进制文件,我将它们保存为单个(连接)列,或者作为两个单独的列(salt& hash)保存。

varchar的好处:

  • 您可以轻松调试,备份,打印,比较以备不时之需。
  • 很容易连接以分离其各个部分。所有字符串函数都可用。
  • 即使是最绿色的开发人员也了解如何管理(concatenat,substring等)字符串。

binary的好处:

  • 无需在字符串到字节[]之间来回编码。 Base64或hexa编码需要更多编码或使用非标准库。
  • 许多开发人员不熟悉[var]binaryblob数据类型列。
  • 许多SQL工具都不能很好地显示二进制列,这使得它更难以被破坏,或只是检查它是做正确的事情。

除此之外,我更喜欢[var]binary,因为它更少编码。