我搜索了一些代码,但是发现了一些预定义的盐。我想为每个用户自动生成salt并将salt值存储在表中。由于我是新来的编程请帮助在c中使用salt加密密码#
回答
(如所建议的,我把它换成我以前的盐生成方法的东西,应该是更安全)
生成一个随机盐:
public static string GenerateRandomSalt(RNGCryptoServiceProvider rng, int size)
{
var bytes = new Byte[size];
rng.GetBytes(bytes);
return Convert.ToBase64String(bytes);
}
var rng = new RNGCryptoServiceProvider();
var salt1 = GenerateRandomSalt(rng, 16);
var salt2 = GenerateRandomSalt(rng, 16);
// etc.
RNGCryptoServiceProvider
用于生成“密码学上较强的随机值”,因此它比标准Random
类更适合在此处使用。然而,你产生的盐,你可以将其使用你选择的算法追加到您的密码和散列:
var salt = GenerateRandomSalt(rng, 16);
var hashedPassword = DoPasswordHashing(password + salt);
不过,值得指出的是做正确的用户身份验证可以是一个比较棘手的问题似乎比。 Eric Lippert在几年前撰写了一系列博客文章:http://blogs.msdn.com/b/ericlippert/archive/2005/01/28/you-want-salt-with-that-part-one-security-vs-obscurity.aspx
不要使用随机*任何涉及密码学的任务;它的设计不是加密安全的。这里的攻击将是彩虹表生成器将专注于随机生成的那些盐,从而大大减少攻击者需要生成的表的大小。 **盐必须是密码随机的才能有用。** –
这当然是事实,我想我应该花时间提供更正确的示范。这是RNGCryptoServiceProvider类的用途,是否正确? –
@ColeCampbell是RNGCryptoServiceProvider最好在这里使用。 – Dragon
- 1. PHP Salt密码加密
- 2. 存储加密密码和salt或仅存储加密密码?
- 3. AES加密 - 密码,salt没有解决?
- 4. 如何在基于密码的加密中处理salt
- 5. 如何使用c#对salt进行加密和散列密码值?
- 6. 在C源代码中加密密码
- 7. C#加密密码
- 8. 使用salt加密的PHP登录
- 9. 在Visual Studio中的SALT哈希密码
- 10. 最优密码salt长度
- 11. 在blowfish加密哈希中查找salt
- 12. 在C#中加密加密#
- 13. 在VBA密码框中加密密码
- 14. 使用Javascript加密密码
- 15. 解密AES加密在C#中使用加密的js
- 16. 使用Jasypt加密和解密密码
- 17. 使用node.js加密/解密密码
- 18. 使用TripleDES加密解密密码
- 19. 使用objective-c加密和解密密码
- 20. 在已编译的C或C++代码中加密密码
- 21. DES加密/解密中的C#编码
- 22. 在数据库中存储salt +密码哈希和防止密码攻击
- 23. 如何使用PHP更改数据库中的SALT密码?
- 24. 加密密码
- 25. 加密密码
- 26. 密码加密
- 27. 加密密码
- 28. 加密密码
- 29. 密码加密
- 30. 密码加密
究竟是什么问题?你似乎完全掌握了你需要做的事情。 –
“我是编程新手”,任何有关加密的问题都应该引发警钟。加密是一件非常艰巨的任务,我会对此非常谨慎。 – RichK