Me pregunto cómo es que debo implementar el cifrado de una sola vez en mi código.
Utilizo páginas de 16 bytes en este momento, y la implementación en Golang desde la página: enlace (la línea 83 es el método Encrypt()
).
Sin embargo, los datos que necesito para cifrar a veces (no siempre) son más grandes que 16 bytes.
// Page must be at least as long as plain text
if len(page) < len(payload) {
return nil, fmt.Errorf("otp: insufficient page size")
}
result := make([]byte, len(payload))
for i := 0; i < len(payload); i++ {
plainText := int(payload[i])
secretKey := int(page[i]) // ln 95
cipherText := (plainText + secretKey) % 255
result[i] = byte(cipherText)
}
Lo que hice fue comentado en la verificación de la longitud de la página, por lo que el cifrado ahora ignora el problema de la longitud; usando módulo mientras se indexa page
(línea 95):
secretKey := int(page[i % len(page)])
Entonces, si cifro el búfer de datos de 10 megabytes, ¿sigue siendo seguro y, si no, por qué?