我正在使用 rijndaelmanaged algoritham 进行密码加密
有没有办法限制加密文本 key 的大小?
例如:1,ABC - 加密 key 大小 10
2, ABCDHGF - Encrypted key size 10
表示固定大小!!
最佳答案
如果您不需要从加密数据中取回密码,您可以使用散列算法。首先计算密码的散列值,然后加密该散列值。由于哈希值具有固定长度,因此您的加密数据将具有固定长度。当您需要检查密码时,解密加密值并根据输入的密码重新计算哈希值,然后检查它们是否匹配。
例如在注册页面上
var encryptedPwd = Encrypt(ComputeHash(txtPassword.Text));
Save(txtUsername.Text, encryptedPwd);
登录页面
var encryptedPwd = SelectPwd(txtUsername.Text);
var pwdHash1 = Decrypt(encryptedPwd);
var pwdHash2 = ComputeHash(txtPassword.Text);
if (AreEqual(pwdHash1, pwdHash2))
// Login OK!
else
// Login fail
另一种选择是制作自定义填充。假设您的密码最大长度为 16 个字符。然后你可以用一些固定的字符将每个密码填充到 16 个字符。然后加密这个填充的密码。验证会更容易,但使用哈希更安全。
注册
var encryptedPwd = Encrypt(txtPassword.Text.PadRight(16, 'X'));
Save(txtUsername.Text, encryptedPwd);
登录
var encryptedPwd = SelectPwd(txtUsername.Text);
var pwd1 = Decrypt(encryptedPwd);
var pwd2 = txtPassword.Text.PadRight(16, 'X');
if (AreEqual(pwd1, pwd2))
// Login OK!
else
// Login fail
关于c# - 限制 rijndael 托管算法 key 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18095997/