First and foremost, I want to iterate that I’m not asking how to HASH a password (such as salting / bcrypt / etc). For every other project I’ve done, I’ve always hashed / salted the passwords but in this case I need to regain the password temporarily.
Basically, I need to store a password in my DB and then have it be accessible again. In codeigniter (the framework I’m using), they use mcrypt as well as a key (which they suggest should be 32-characters long). Would this suffice?
EDIT:
The reason for asking: I need to be able to send out mission-critical sensitive PDFs to users and want to password protect them (ideally with the same password).
After a discussion with people on SO and off, I’ve come to the conclusion that you should NEVER encrypt a password and always hash / salt it. Think of how many people use the same password / email for different services. Therefore, I’ve come to the conclusion that IF you DO need to encrypt an item that you should use a separate PIN or other non-essential item.
However, even though I’m going to go the pin route and keep the passwords hashed, I still am very curious as to how you would theoretically go about this problem.
Yes, as long as you keep the SALT value secret.
UPDATE: seems people do not happy with simple answers. by using
mcryptextensions, you can encrypt your data with a specific secret valueSALT. If people do not know the SALT, they can’t decrypt the value.Example:
Of course, if you want extra security, consider using Public Key Infrastructure.