On Fri, 2024-07-26 at 00:44 +0200, Juliette Reinders Folmer wrote:
> On 26-7-2024 0:00, Nick Lockheart wrote:
>  
> > 
> > That's a good point. What if there were crypto functions that
> > worked
> > like password_hash() in that they had one generic function name,
> > but
> > magically used the new/better "best practice" algorithms as time
> > went
> > by without the need to update any calling code?
> > 
> > Maybe there should be three generic-named functions:
> > 
> > fast_hash() // not secure, makes UIDs quickly
> > secure_hash() // uses best practice one-way hash algo
> > secure_crypt() // uses best practice reversible encryption.
>  
>  While I like the idea, this sounds like a huge nightmare in the
> waiting when data is stored somewhere and later compared.
>  
>  Example:
>  * Let's say these functions get introduced in PHP 8.5.
>  * `secure_hash()` is used in an application running on PHP 8.5 to
> secure some data before storing it in a database. This data is used
> in comparisons - stored vs user provided.
>  * Now in PHP 9.1, the hash algorithm is changed.
>  * The production environment gets updated to PHP 9.1 and suddenly
> the application breaks as the data verification will no longer work
> as the new algo is used on the user provided data, but the database
> stored version of the same data was created with the old algo....
>  

Doesn't password_hash() handle this automatically? The result of the
password_hash() function includes the hash and the algorithm used to
hash it. That way password_verify() magically works with the string
that came from password_hash().

Reply via email to