استگانوگرافی با متلب
استگانوگرافی یا پنهان نگاری یکی از پر کاربردترین بخشهای مرتبط به رمزنگاری است. در این نوشته روش انجام استگانوگرافی با متلب توسط روش LSB را بررسی خواهیم کرد. کلمهی اختصاری LSB از واژهی Least Significant Bit گرفته شده است.
استگانوگرافی با متلب
استگانوگرافی چیست؟
مفهوم Steganography از دو لغت زبان بین المللی یونانی:
- استگانوس. (پوشاندن)
- گرافتوس. (نوشتن )
گرفته شده است. مخفی کردن داده یا فایلی در یک فایل دیگر، به روشی که فقط افرادی که از آن موضوع آگاه هستند با ابزار لازم بتوانند کار بکنند و آنرا واکاوی کنند. استگانوگرافی را گاهی با Watermarking میشناسند.
انواع استگانوگرافی
انواع مختلف استگانوگرافی به شرح زیر است:
- استگانوگرافی در متن.
- استگانوگرافی در تصاویر.
- استگانوگرافی در صوت.
- استگانوگرافی در ویدئو.
روشهای استگانوگرافی
روشهای مختلف استگانوگرافی به شرح زیر است:
- روش open space methods.
- روش syntactic methods.
- روش semantic methods.
استگانوگرافی با متلب
برای انجام عملیات Steganography با متلب از کد زیر استفاده کنید:
clear all;
clc;
input = imread('img (1).jpg');
input=rgb2gray(input);
input=imresize(input, [512 512]);
message='Amir Shokri';
len = length(message) * 8;
ascii_value = uint8(message);
bin_message = transpose(dec2bin(ascii_value, 8));
bin_message = bin_message(:);
N = length(bin_message);
bin_num_message=str2num(bin_message);
output = input;
height = size(input, 1);
width = size(input, 2);
embed_counter = 1;
for i = 1 : height
for j = 1 : width
if(embed_counter <= len)
LSB = mod(double(input(i, j)), 2);
temp = double(xor(LSB, bin_num_message(embed_counter)));
output(i, j) = input(i, j)+temp;
embed_counter = embed_counter+1;
end
end
end
sum1 = 0;
sum2 = 0;
for i =1 : 512
for j = 1 : 512
sum1 = sum1 + double(output(i, j));
sum2 = sum2 + double(output(i, j));
end
end
sum1 / (512*512)
sum2 / (512*512)
برای دریافت فایل این کد روی این لینک کلیک کنید.
توضیحات
- تبدیل تصویر ورودی به خاکستری.
- تغییر اندازه ی تصویر یا Resize.
- تبدیل متن مورد نظر به باینری.
- ساخت ابتدایی تصویر خروجی از تصویر ورودی.
- یک حلقه از موارد زیر میسازیم:
-
- تبدیل پیکسل عکس به باینری.
- بیت بعدی برای جاسازی پیام انتخاب میشود.
- متغیر temp ساخته میشود.
- اگر بیت پیام و LSB یکسان بود مقدار temp صفر و در غیر اینصورت یک میشود.
- در آخر با کمک XOR بین پیکسلهای پیام و LSB متغیر temp تنظیم میشود.
- تصویر خروجی به روزرسانی میشود.
برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]



















اگر طول پیام از ظرفیت تصویر بیشتر باشه چی میشه؟
ممکن است پیام دچار اختلال شود.
آیا روش LSB روی فایلهای صوتی هم به همین شکل قابل پیادهسازیه؟
به طور کلی یکسان است ولی سناریوی انجام آن در صوت کمی متفاوت است.
تفاوت اصلی بین استگانوگرافی و واترمارکینگ دقیقا چیه؟
واترمارکینگ قابل مشاهده با چشم انسان است ولی در استگانوگرافی هدف پنهان کردن پیام است.
چرا بیشتر روشها برای استگانوگرافی روی تصاویر تمرکز دارن؟
خیر روی ویدیو، صوت و… هم قابل استفاده است و استفاده میشود.
پس چرا در خروجی تصویری به نمایش گذاشته نمیشه؟
با تابع imshow متغیر output رو نمایش بدین خروجی رو مشاهده کنید.