Python环境下MariaDB数据库存储密码应选用何种数据类型?
bcrypt哈希在MariaDB中的存储数据类型选择
核心结论
优先选用 VARCHAR(60),这是最实用、最通用的方案。
各类型分析
VARCHAR(60)
标准bcrypt哈希(包含盐)会被编码为固定60字符的Base64字符串,VARCHAR(60)刚好完美容纳。作为字符串类型,它可读性强,应用层无需额外处理二进制编码,查询和维护都更方便,且能兼容大多数编程语言的bcrypt库默认输出格式。注意将字段设为NOT NULL。BINARY(24)
若你坚持存储原始bytes类型的哈希值(bcrypt哈希原始长度为24字节),可以用这个类型。但缺点明显:应用层必须严格处理二进制数据的编解码,可读性差,排查问题时无法直接查看哈希内容,且后续若更换哈希算法(长度可能变化),需要修改字段定义,灵活性不足。BLOB
完全不推荐。BLOB设计用于存储大体积二进制数据(如文件),bcrypt哈希仅24字节,用BLOB会造成空间浪费,且查询效率远低于前两种类型,徒增复杂度。
额外提示
bcrypt生成的哈希串本身已经包含盐信息,无需单独存储盐字段,直接存储完整的哈希串即可,简化逻辑同时避免盐与哈希不匹配的问题。
内容的提问来源于stack exchange,提问作者StNicolay
相关产品推荐
相关产品推荐

