Lo que está haciendo no es "cifrado", per se; es "hashing". La principal diferencia entre los dos es que el cifrado es fácilmente reversible (con la clave correcta, por supuesto), mientras que el hashing está diseñado para ser extremadamente difícil de revertir en cualquier circunstancia que no sea conocer el mensaje original en primer lugar.
En teoría, los hash simulan un "oráculo aleatorio", un homúnculo hipotético con una memoria eidética y una forma de generar números perfectamente únicos y perfectamente aleatorios sin límite de rango superior. Le darías un mensaje a este pequeño hombre, y una de dos cosas sucedería; o nunca ha visto el mensaje antes, en cuyo caso genera un nuevo número aleatorio y se lo da a usted como resumen, o ha visto ese mensaje antes, por lo que recuerda y le da el número que generó cuando lo vio primera vez. En ese modelo teórico, hay una relación cero entre un mensaje y su resumen, y sin un solo número que aparezca dos veces del RNG, no hay posibilidad de una colisión.
Desafortunadamente, no tenemos un oráculo aleatorio ideal; La idea tiene imposibilidades prácticas para una implementación digital, como la capacidad del oráculo para almacenar y recordar eficientemente cada mensaje que alguien haya descifrado en cualquier lugar, y la capacidad de los clientes de aceptar un número que podría ser cientos o miles de dígitos decimales. en longitud. En cambio, tenemos funciones hash, que son operaciones matemáticas irreversibles (unidireccionales) que funcionan en el mensaje mismo, para crear una transformación determinista (mismo mensaje => mismo hash) sin aparenterelación entre el hash y el mensaje original. Como se menciona en los comentarios, tampoco debería haber un cambio predecible en el valor hash producido al realizar cambios sistemáticos en el mensaje; idealmente, cada bit del resumen tendría un 50% de posibilidades de cambiar, dado un cambio en un solo bit del mensaje.
Hay muchos usos para una función hash; se usan para la verificación de desafío (piense en las credenciales de inicio de sesión como contraseñas) sin la necesidad de que ambas partes conozcan el secreto de texto sin formato, y se usan como sumas de verificación para verificar que un mensaje no haya sido manipulado o dañado. También se utilizan en los llamados escenarios de "prueba de trabajo"; tareas computacionales que son difíciles de completar pero fáciles de verificar.
Si alguna vez encontrara una manera de revertir eficientemente un resumen de hash SHA256 para producir un mensaje (cualquier mensaje) que resultaría en ese hash, sería una prueba demostrativa de que, de hecho, el hash está fundamentalmente roto. De hecho, se cree que SHA256 es seguro, lo que significa que no hay un método documentado, por práctico que sea, para comenzar con un resumen de hash y producir un mensaje de colisión que requiera menos trabajo que simplemente probar todas las posibilidades (lo que para SHA-256 es idealmente 2). ^ 256 ~ = 10 ^ 77 posibilidades).