【发布时间】:2011-06-29 20:44:05
【问题描述】:
我将使用这种方法来存储我的密码:
- 用户输入密码
- 应用随机数加盐密码
- 然后使用加盐密码加密,使用某种加密算法随机选择数据数组(由预定义的字符/字节表组成)
- 为简单起见,它可以仅用于数字表,因此在数字的情况下,随机数组将只是足够长的整数/大整数。
- 然后我存储在 DB salt(修改值)和加密数组中
检查密码有效性:
- 获取密码
- 从 DB 中读取 salt 并计算解密密钥
- 尝试解密加密数组
- 如果成功(数学平均值)逐字节比较解密值
- 它是否只包含已知表中的字符/字节。例如它是整数/大整数吗?如果是这样 - 密码算作有效
你觉得这个过程怎么样?
简而言之,它是一种使用哈希函数的替代方案...
在这种方法中,加密算法即将用于计算不可逆值。
编辑
# Encrypt/decrypt function that works like this:
KEY=HASH(PASSWORD)
CYPHERTEXT = ENCRYPT(PLAINTEXT, KEY)
PLAINTEXT = DECRYPT(CYPHERTEXT, KEY)
# Encrypting the password when entered
KEY=HASH(PASSWORD)+SALT or HASH(PASSWORD+SALT)
ARRAY={A1, A2,... AI}
SOME_TABLE=RANDOM({ARRAY})
ENCRYPTED_TABLE = ENCRYPT(SOME_TABLE, KEY + SALT)
# Checking validity
DECRYPT(ENCRYPTED_TABLE, PASSWORD + SALT) == SOME_TABLE
if(SOME_TABLE contains only {ARRAY} elements) = VALID
else INVALID
【问题讨论】:
-
为什么?使用哈希函数+盐有什么问题?
-
没什么错...只是想发明轮子:)
标签: security encryption passwords salt