Supongamos que tiene texto y desea que se lo envíe a su amigo, pero no quiere que nadie más lo lea. Eso probablemente significa que desea cifrarlo para que solo usted y su amigo puedan leerlo. Pero hay un problema: usted y su amigo olvidaron ponerse de acuerdo sobre un método de cifrado, por lo que si les envía un mensaje, ¡no podrán descifrarlo!
Después de pensar en esto por un tiempo, decides enviarle a tu amigo el código para cifrar tu mensaje junto con el mensaje. Tu amigo es muy inteligente, por lo que probablemente puedan descubrir cómo descifrar el mensaje estudiando el método de cifrado.
Por supuesto, dado que otras personas podrían estar leyendo el mensaje, desea elegir un esquema de cifrado que haga que sea lo más difícil de descifrar (descubra el esquema de descifrado).
Tarea de policías
En este desafío, los policías desempeñarán el papel del escritor: diseñarás un esquema de cifrado que convierta cadenas en cadenas. Sin embargo, este esquema de cifrado debe ser biyectivo , lo que significa que no se deben asignar dos cadenas a otra cadena, y cada cadena se puede asignar a una entrada. Debe tomar solo una entrada: la cadena a codificar.
Luego publicará un código que realiza el cifrado y un solo mensaje cifrado con el esquema detallado por su código.
Como está pagando por byte para enviar mensajes, su puntaje será la longitud de su código más la longitud del texto cifrado . Si su respuesta está descifrada, tendrá una puntuación infinita.
Después de una semana, puede revelar el texto y marcar su respuesta como segura . Las respuestas seguras son aquellas que no se pueden descifrar.
Tarea de ladrones
Los ladrones jugarán como el amigo del escritor o el intermediario malicioso (no hay diferencia material, pero puedes jugar como si fuera más divertido hacerlo). Tomarán los esquemas de cifrado y el texto cifrado e intentarán descifrar el mensaje cifrado. Una vez que descubran el mensaje cifrado, lo publicarán en un comentario. (No habrá un hilo separado de ladrones para esta pregunta).
El ganador será el ladrón con más grietas.
Aquí hay un ejemplo de cómo se vería una solución agrietada:
fuente
Respuestas:
Gelatina , 57 + 32 = 89 bytes ( agrietada )
Mensaje cifrado:
Como una cadena hexadecimal:
Explicación:
Donde
N
está codificado por la cadena“¡ḟċ⁷Ḣṡ⁵ĊnɠñḂƇLƒg⁺QfȥẒṾ⁹+=?JṚWġ%Aȧ’
, que es el número105587021056759938494595233483151378724567978408381355454441180598980268016731
.Además, este es el método RSA con
N
la clave pública y la anterior21
. Romper esto es equivalente a encontrar los dos factores primos deN
.fuente
_ìNb
(¡ Pruébelo en línea! ).Gelatina , 88 + 64 = 152 bytes
Función de cifrado:
Mensaje cifrado:
Como una cadena hexadecimal:
Explicación:
Donde
N
está codificado por la cadena:cual es el numero
Además, este es el método RSA con
N
la clave pública y la anterior13
. Romper esto es equivalente a encontrar los dos factores primos deN
, que tiene 512 bits.fuente
JavaScript (ES6), 43 + 33 = 76 bytes Agrietado por Leaky Nun
Función de cifrado, 43 bytes:
Mensaje cifrado, 33 bytes:
NB: este método de cifrado depende del navegador.
fuente
T! a)o khas eotrto-c; o sa cwsaoy
That was soooo easy to crack! -;)
(Usé Firefox para descifrarlo)Braingolf, agrietado
Pruébalo en línea!
Mensaje cifrado, 45 bytes (UTF-8)
Códigos hexadecimales de mensajes cifrados
Mensaje descifrado
Explicación
Descifrador
Se puede hacer un decodificador cambiando solo 3 caracteres. Simplemente quite el
1
, e inserte$_
entre&,
y&g
fuente
C'mon, this one's *easy*!
g
es indocumentado?JavaScript (ES6), 96 + 9 = 105 bytes
Texto cifrado (codificado en hexadecimal):
7d111c74b99faff76a
Pruébalo en línea!
Salidas de muestra (usando el motor V8):
abc123 -> db48ea4f86b9
Hola -> 1b3420f5ab
fuente
76
.