¿Es esta una forma segura de aumentar el costo de cálculo de md5 o sha1?
public static byte[] increaseHashComplexityMd5(byte[] hash, int loops)
{
for(int loop = 1; loop <= loops; loop++)
{
hash = md5(encryptAes(hash, reverseBits(hash)));
}
return hash;
}
public static byte[] increaseHashComplexitySha1(byte[] hash, int loops)
{
for(int loop = 1; loop <= loops; loop++)
{
hash = sha1(encryptAes(hash, reverseBits(hash)));
}
return hash;
}
- reverseBits invierte cada bit de cada byte, por lo que 12345678 90111213 se convierte en 31211109 87654321.
- encryptAes encripta el hash mediante el hash con bits invertidos, dará como resultado un resultado de 16 bloques de bloques.
- md5 / sha1 hash los bytes dados.
Mi objetivo es hacer que sea más difícil para los hashes de fuerza bruta. En ambas plataformas (C ++ y Java), ya tengo las funciones hash, aes y reverseBits, por lo que algo como esto sería ideal. ¿Esto lo hará, o esto es inseguro?