Ho messo molta attenzione in questo algoritmo molto semplice e non ho idea se fosse stato pensato prima ... Ma penso che dovrebbe avere.
Inoltre non so nulla di altri algoritmi di crittografia, quindi non posso dire se questo è stato già inventato o meno.
È tutto disegnato su questo foglio:
E questa è una piccola funzione C # per questo algoritmo.
public static void Encrypt(Stream source, Stream target, byte[] key)
{
int current;
long pos = 0;
int res;
if (source.CanSeek) source.Seek(0, SeekOrigin.Begin);
if (target.CanSeek) target.Seek(0, SeekOrigin.Begin);
while ((current = source.ReadByte()) != -1)
{
byte b = (byte)current;
res = b + key[pos++ % key.Length];
if (res > byte.MaxValue) res -= byte.MaxValue;
target.WriteByte((byte)res);
}
}
Tutto quello che so sulla crittografia è che (i-) modifica in modo reversibile i dati per proteggerli.
Da quanto ne so, non c'è modo di decifrare la chiave senza conoscere i dati originali.
E per verificare se la chiave è corretta (nel tentativo di decodificare), l'integrità dei dati deve essere verificata. Quindi un hash deve essere conosciuto ...
Quindi questo algoritmo quasi ritardato manterrà i miei dati al sicuro?
In caso negativo, perché?
Modifica: tentare di risolvere il problema!
I byte crittografati sono 169 131 181 215 152 43 55 126 235 88 46 150 17 45 185 122 180 203 34 67 109 54 127 234 87 45 57 222 125 152 142 133
...
L'hash MD5 è 116 249 25 168 168 255 211 143 122 60 216 192 37 167 178 112
!
Vai avanti!