Comment l'appartenance ASP.NET génère-t-elle sa clé salt et ensuite comment l'encoder (c'est-à-dire, salt + password ou password + salt)? J'utilise SHA-1 avec mon abonnement, mais je voudrais recréer les mêmes sels de sorte que les trucs intégrés pour l'adhésion puissent hacher les choses de la même manière que mes affaires.sel d'adhésion ASP.NET?
Édition 2: Peu importe. Je l'ai mal lu et je pensais qu'il disait octets, pas bits. Je passais donc en 128 octets, pas en 128 bits.
Éditer: J'essayais de le faire ainsi. Voilà ce que j'ai, donc
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, 0, dst, 0, src.Length);
Buffer.BlockCopy(bytes, 0, dst, 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;
}
Je n'ai pas essayé de voir si les membres ASP.NET reconnaîtra ce encore le mot de passe haché ressemble beaucoup. Je ne sais pas comment le convertir en base64 pour le sel.
Je l'ai fait
byte[] storeSalt = createSalt(new byte[128]);
string salt = Encoding.Unicode.GetString(storeSalt);
string base64Salt = Convert.ToBase64String(storeSalt);
int test = base64Salt.Length;
longueur de test est de 172 ce qui est bien au cours des 128 bits donc ce que je fais mal?
C'est ce que leur sel ressemble
vkNj4EvbEPbk1HHW+K8y/A==
C'est ce que mon sel ressemble
E9oEtqo0livLke9+csUkf2AOLzFsOvhkB/NocSQm33aySyNOphplx9yH2bgsHoEeR/aw/pMe4SkeDvNVfnemoB4PDNRUB9drFhzXOW5jypF9NQmBZaJDvJ+uK3mPXsWkEcxANn9mdRzYCEYCaVhgAZ5oQRnnT721mbFKpfc4kpI=
Vous pouvez vérifier ma réponse sur cette SO page: http://stackoverflow.com/questions/530426/reimplement-asp-net-membership-and- user-password-hashing-in-ruby/8184569 # 8184569 –