Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MembershipProvider encryption/decryption

I have some questions on the MembershipProvider in .Net that I have been unable to find clear answers to.

  • What type of encryption is used, AES?
  • The method EncryptPassword, can it handle any salt, or do I simply add that before passing it?
  • The method DecryptPassword - can you really decrypt the password? Isn't that a poor practice to be able to do?

Thank you for the input!

like image 538
naspinski Avatar asked Oct 12 '22 16:10

naspinski


1 Answers

add Element for providers for membership (ASP.NET Settings Schema)

  • enablePasswordRetrieval attribute: "Specifies whether the membership provider instance supports password retrieval. If true, the membership provider instance supports password retrieval The default is false for both the SQL and Active Directory providers."
  • passwordFormat attribute: "One of the MembershipPasswordFormat values that indicates the format for storing passwords in the membership data store. The default is Hashed."
    • Hashed: "Passwords are encrypted one-way using the SHA1 hashing algorithm. You can specify a hashing algorithm different than the SHA1 algorithm using the hashAlgorithmType attribute."
    • Encrypted: "Encrypted Passwords are encrypted using the encryption settings determined by the machineKey Element (ASP.NET Settings Schema) element configuration."

So, by default the SqlMembershipProvider uses a hashed (one-way) password that is hashed with SHA1. Hashing the passwords doesn't use the EncryptPassword/DecryptPasswords methods, but no, you cannot manually pass salts to Encryption/Encoding of passwords (it salts them for you).

like image 100
Greg Avatar answered Oct 20 '22 13:10

Greg