大佬教程收集整理的这篇文章主要介绍了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=
我希望有帮助!
编辑-
我提到的答案是顶部帖子中的代码,
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用于生成盐。它基本上是一长串的随机数据。这是基于每个用户生成和存储的。通常,这是在@R_328_10589@或更改密码时完成的。
BlockCopy只是将盐与密码结合使用的方法。上面的代码基本上等同于盐密码。
你不能重新创建盐值,因为它是完全随机的。然而,它是通过框架为每个用户存储的。
将salt与密码结合使用以上技术进行散列,将允许您使用框架存储的散列值验证用户密码。
我想我们都以不同的方式看你的问题。我发布的代码不会生成你的盐,但它会让您以与ASP.NET成员身份兼容的方式使用它。
对不起,我的解释不是最好的答案您的问题?
以上是大佬教程为你收集整理的ASP.NET会员盐?全部内容,希望文章能够帮你解决ASP.NET会员盐?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。