我有一个散列密码要存储在我的 SQL Srever 数据库中
不确定是在存储之前将其转换为 base 64 字符串还是将其存储为varbinary
.
如果它是 base 64,在我的 C# 中处理起来会更容易,但我不确定这种方法是否有缺点。
我有一个散列密码要存储在我的 SQL Srever 数据库中
不确定是在存储之前将其转换为 base 64 字符串还是将其存储为varbinary
.
如果它是 base 64,在我的 C# 中处理起来会更容易,但我不确定这种方法是否有缺点。
使用 base 64 没有安全缺陷,因为它只是二进制数据的不同表示,只要您不认为 Base 64 增加了一层安全性。由于 Base 64 很容易被任何人解码(因为它不使用密钥),所以它不是安全层,而只是一种不同的格式。我之所以强调这一点,是因为我已经看到了很多使用 Base 64 来混淆敏感数据的漏洞。攻击者很容易恢复数据(在这种情况下是我。别担心,这是在学术界的安全类;-))。所有敏感数据都应使用来自服务器的密钥进行加密。
我自己更喜欢使用 Base 64,因为它可以很容易地作为字符串处理。我总是在加密后将二进制数据转换为 Base 64。
正如评论中提到的那样,它会稍微减慢你的算法。然而,通过花费周期转换为 Base 64 来减慢算法的速度实际上是安全性的一个优势,因为它使暴力密码攻击对攻击者来说不太可行。