استگانوگرافی با متلب
استگانوگرافی یا پنهان نگاری یکی از پر کاربردترین بخشهای مرتبط به رمزنگاری است. در این نوشته روش انجام استگانوگرافی با متلب توسط روش 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]
پس چرا در خروجی تصویری به نمایش گذاشته نمیشه؟
با تابع imshow متغیر output رو نمایش بدین خروجی رو مشاهده کنید.