![]() |
||||||||||||
|
|
|||||||||||
Worum geht es?Die Anwendung aus Teil 2 fügt sichtbares Rauschen in die Träger-Bilder ein. In diesem Artikel werden die Bytes aufgeteilt und jedes Bit in einem anderen Pixel versteckt. Die versteckt Nachricht ist endlich unsichtbar, da nur das niedrigste Bit einer Farb-Komponente geändert wird. Ende des RegenbogensEin ganzes Byte einer RGB-Farbe zu ersetzen verursacht ein Regenbogen-Muster. So sieht ein weisses Bild (alle Pixel einfach nur weiss) aus, nachdem ein Text darin versteckt wurde: ![]()
Auf Farbfotos sind diese Regenbogen-Pixel vielleicht akzeptabel.
Wie man sieht wurden zu viele Bits der Pixel geändert. Bits lesen und setzen
Für jedes Byte der Nachricht müssen wir
Die C#-Funktionen zum Lesen und Setzen einzelner Bits sind einfach:
private static bool GetBit(byte b, byte position){
return ((b & (byte)(1 << position)) != 0);
}
private static byte SetBit(byte b, byte position, bool newBitValue){
byte mask = (byte)(1 << position);
if(newBitValue){
return (byte)(b | mask);
}else{
return (byte)(b & ~mask);
}
}
Der Rest des Codes hat sich kaum geändert. Verstecken funktioniert jetzt so...
...und Extrahieren so:
Das ist genug Text für diese Seite. Wenn Du mehr Details wissen möchtest, solltest Du den Quellcode herunterladen. |