15/08/13 9:36
Roby94
Salve, mi sto cimentando nella creazione di un algoritmo che generi da una chiave e un immagine una seconda immagine che non presenti alcun riferimento visivo alla prima immagine, e che da essa si possa ritornare all'immagine di partenza mediante la chiave senza alcuna perdita di dati.
Fino ad ora ho pensato di operare su ogni pixel modificando il colore di esso sommando il valore ascii ricavati da un singolo carattere della chiave
Ecco il codice che ho adoperato:
Questo sistema è molto semplice e permette una facile decodifica, ma l'immagine è pressoché identica solo con i colori alterati se la chiave non è molto complessa.
Mi potreste aiutare, visto che non mi sono mai cimentato in un operazione del genere.
Grazie in anticipo
Fino ad ora ho pensato di operare su ogni pixel modificando il colore di esso sommando il valore ascii ricavati da un singolo carattere della chiave
Ecco il codice che ho adoperato:
keyArray = Encoding.ASCII.GetBytes(this.key); int i = 0; for (int y = 0; y < sourceImage.Height; y++) { for (int x = 0; x < sourceImage.Width; x++) { Color pixelColor = sourceImage.GetPixel(x, y); int a = pixelColor.A + keyArray[i] - ((pixelColor.A + keyArray[i]>255)?256:0); i++; if (keyArray.Count() == i) i = 0; int r = pixelColor.R + keyArray[i] - ((pixelColor.R + keyArray[i] > 255) ? 256 : 0); i++; if (keyArray.Count() == i) i = 0; int g = pixelColor.G + keyArray[i] - ((pixelColor.G + keyArray[i] > 255) ? 256 : 0); i++; if (keyArray.Count() == i) i = 0; int b = pixelColor.B + keyArray[i] - ((pixelColor.B + keyArray[i] > 255) ? 256 : 0); i++; if (keyArray.Count() == i) i = 0; newImage.SetPixel(x, y, Color.FromArgb(a, r, g, b)); } }
Questo sistema è molto semplice e permette una facile decodifica, ma l'immagine è pressoché identica solo con i colori alterati se la chiave non è molto complessa.
Mi potreste aiutare, visto che non mi sono mai cimentato in un operazione del genere.
Grazie in anticipo
aaa