Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > стеганография C#


Автор: СерегаГоляков 14.3.2011, 14:47
Приветствую) Решил разобраться что такое стеганография,  для начала решил просто тект из TextBox запрятать в bmp картинку. 
Но сразу же проблема  с русскими буквами, хотя английские буквы, знаки и цифры норм вытаскиваются из bmp, а вот
когда текст кот хочу разбить на биты русские буквы имеют значения:
а= 1072
б= 1073 и тд
При обратном чтении байтов и потом их конвертации в символы, получается что считываются другие чтоли:

107 210 73 и получаются другие знаки.

Автор: -Mikle- 16.3.2011, 09:42
Не могу понять... если ты сразу записываешь символы в юникод (2 байта) то и при чтении тоже читай их как юникод. Все должно работать.

Код


string stegText = "Привет миру!";
byte[] stegBuffer = Encoding.Unicode.GetBytes(stegText);
// из-за юникода длина массива будет в два раза длинее длины текста
// побитово объединяешь с картинкой и сохраняешь

..............

byte[] stegBuffer = ............открываешь и формируешь массив из своих битов в такой же последовательности, как и при сохранении
string stegText = Encoding.Unicode.GetString(stegBuffer);



Вместо юникода можешь использовать компактный вариант UTF8.

Добавлено через 6 минут и 1 секунду
PS: Для работы с битами в данном случае могу порекомендовать использовать BitArray.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)