我有一个哈希密码存储在我的SQL Srever数据库中
不确定在存储之前是否将其转换为基本64字符串,或者是否将其存储为varbinary
。
如果它是64位,那么在我的C#中处理起来会更容易,但我不确定这种方法是否存在缺陷。
答案 0 :(得分:5)
使用base 64没有安全性缺点,因为它只是二进制数据的不同表示,只要你不认为Base 64是添加一层安全性。由于Base 64很容易被任何人解码(因为它不使用密钥),因此不是安全层,而只是一种不同的格式。我强调这一点是因为我看到使用Base 64来混淆敏感数据导致了很多漏洞。攻击者很容易找到这些数据(在这种情况下我是。不用担心,这是学术界的安全级别;-))。应使用服务器中的密钥对所有敏感数据进行加密。
我更喜欢自己使用Base 64,因为它可以作为字符串轻松处理。我总是在加密后将二进制数据转换为Base 64。
正如评论中提到的explunit,它会使你的算法慢一点。然而,通过花费周期转换到Base 64来减慢算法实际上是对安全性的加分,因为它使得暴力加密攻击对攻击者来说不太可行。