ASP.NET会员盐?
ASP.NET会员如何生成他们的盐键,然后如何对它们进行编码(也就是盐密码或密码盐)?
我正在使用SHA-1与我的会员资格,但我想重新创建相同的盐,所以内置的会员资料可能会像我的东西一样散布的东西。 编辑2:没关系我误读了,正在考虑说字节,而不是位。所以我传递128字节,而不是128位。 编辑:我一直在努力做到这一点。这就是我所拥有的 public string EncodePassword(string password,string salt) { byte[] bytes = Encoding.Unicode.GetBytes(password); byte[] src = Encoding.Unicode.GetBytes(salt); byte[] dst = new byte[src.Length + bytes.Length]; Buffer.BlockCopy(src,dst,src.Length); Buffer.BlockCopy(bytes,src.Length,bytes.Length); HashAlgorithm algorithm = HashAlgorithm.Create("SHA1"); byte[] inArray = algorithm.ComputeHash(dst); return Convert.ToBase64String(inArray); } private byte[] createSalt(byte[] saltSize) { byte[] saltBytes = saltSize; RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); rng.GetNonZeroBytes(saltBytes); return saltBytes; } 所以我没有试图看看ASP.NET会员是否会认识到这个,而哈希密码看起来很接近。我只是不知道如何把它转换为base64的盐。 我这样做 byte[] storeSalt = createSalt(new byte[128]); string salt = Encoding.Unicode.GetString(storeSalt); string base64Salt = Convert.ToBase64String(storeSalt); int test = base64Salt.Length; 测试长度是172,这超过了128位,所以我做错了什么? 这是他们的盐看起来像 vkNj4EvbEPbk1HHW+K8y/A== 这是我的盐看起来像 E9oEtqo0livLke9+csUkf2AOLzFsOvhkB/NocSQm33aySyNOphplx9yH2bgsHoEeR/aw/pMe4SkeDvNVfnemoB4PDNRUB9drFhzXOW5jypF9NQmBZaJDvJ+uK3mPXsWkEcxANn9mdRzYCEYCaVhgAZ5oQRnnT721mbFKpfc4kpI= 解决方法
What is default hash algorithm that ASP.NET membership uses?对其默认算法进行了很好的讨论。
我希望有帮助! 编辑- public string EncodePassword(string pass,string salt) { byte[] bytes = Encoding.Unicode.GetBytes(pass); //byte[] src = Encoding.Unicode.GetBytes(salt); Corrected 5/15/2013 byte[] src = Convert.FromBase64String(salt); byte[] dst = new byte[src.Length + bytes.Length]; Buffer.BlockCopy(src,src.Length); Buffer.BlockCopy(bytes,bytes.Length); HashAlgorithm algorithm = HashAlgorithm.Create("SHA1"); byte[] inArray = algorithm.ComputeHash(dst); return Convert.ToBase64String(inArray); } 他们正在使用BlockCopy组合Unicode Salt Pass – 回答你的问题: 这两种算法都是必需的,可以实现不同的角 RNG Crypto用于生成盐。它基本上是一长串的随机数据。这是基于每个用户生成和存储的。通常,这是在创建用户或更改密码时完成的。 BlockCopy只是将盐与密码结合使用的方法。上面的代码基本上等同于盐密码。 你不能重新创建盐值,因为它是完全随机的。然而,它是通过框架为每个用户存储的。 将salt与密码结合使用以上技术进行散列,将允许您使用框架存储的散列值验证用户密码。 我想我们都以不同的方式看你的问题。我发布的代码不会生成你的盐,但它会让您以与ASP.NET成员身份兼容的方式使用它。 对不起,我的解释不是最好的答案您的问题? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 在IE中清除cookie后,保持用户登录的是什么?
- asp.net-mvc – 具有Knockout和Web API的ASP.NET MVC:是否
- ASP.NET Core使用Jaeger实现分布式追踪
- asp.net – 在实体框架中使用PersianCalendar作为表列的正确
- TreeView递归绑定无限分类数据
- asp.net – 如果已经有一个带有runat服务器属性的表单,为什
- asp.net-mvc-3 – 由Enter按钮触发的MVC3输入按钮
- asp.net-mvc-3 – ASP.NET MVC 3应用程序的扩展?
- asp.net-mvc – HttpContext和HttpContextWrapper之间的区别
- asp.net-mvc – 模拟DataServiceQuery
- asp.net – 为什么我的函数在加载UpdatePanel后运
- 通过HTTPS在ASP.NET中安全的会话cookie
- asp.net – 为MVC3应用程序中的某些操作启用并要
- 实体框架4 – ASP.NET MVC 3应用程序使用Ninject
- asp.net-mvc – 自定义DataAnnotations Validato
- asp.net-mvc – N2 for MVC – 如何让Zones工作?
- asp.net-mvc-4 – “你没有权限查看这个目录或页
- asp.net-mvc-2 – 如何设置我的图标?
- asp.net – 直接在ASPX页面中渲染DateTime.Now
- asp.net – 扩展方法必须在非泛型静态类中定义