sql-server - SQL 服务器。密码哈希的数据类型 (sha 512)
问题描述
想知道为我的 SQL Server 选择哪种数据类型来存储 sha512 密码哈希。(散列值将始终具有固定长度)
declare @hashedPasswd varchar(max)
set @hashedPasswd = convert(varchar(max), HASHBYTES('SHA2_512', 'any password with any langth'), 1)
select len (@hashedPasswd)
总是返回 130 的长度。
列的数据类型的最佳选择是什么?变体是 nvarchar(max)、nvarchar(130)、varchar、char。如果我理解正确,在我的情况下 nvarchar 是浪费空间,因为它只是散列值中的 ASCII 符号。
请协助。
解决方案
SHA2_512 是 64 字节长,内部是一个 varbinary,所以我建议改用这个数据类型。为了更安全,我还建议使用额外的盐来加密和解密密码。您可以在此处找到有用的描述: https ://www.mssqltips.com/sqlservertip/4037/storing-passwords-in-a-secure-way-in-a-sql-server-database/
最好的问候,斯蒂芬
推荐阅读
- amazon-web-services - 使用 SAM AWS 部署带有 HTTP 端点集成的 REST API?
- python - 如何使用默认填充值将 2d numpy 数组的所有内部值设置为相同的大小
- javascript - Cloud Firestore onSnapshot() 仅在没有初始状态的更改时触发
- javascript - 在js中将div旋转到一定高度
- c++ - 我可以以相同的方式使用 char* c 和字符串吗?
- java - android中的Webview不会从res/drawable加载图像
- java - Polarion ALM JAVA SDK API WorkItem 获取类型表示
- authentication - 关于身份验证令牌的 insomnia bitbucket git 配置
- javascript - 每次更新后如何停止渲染多个表?
- javascript - 以 express 呈现 JSON 文件以在 PUG 中进行插值