999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用Python實現圖片“隱寫術”

2022-10-12 03:27:44謝作如浙江省溫州中學
中國信息技術教育 2022年19期
關鍵詞:信息

謝作如 浙江省溫州中學

隱寫術(steganography)一詞來源于希臘詞匯stegons和graphia,意即“隱藏”和“書寫”,即把某些特殊信息隱藏于正常載體之中,從而實現掩蓋特殊信息存在的事實,不易引起敵方的懷疑。信息隱藏的發展很大程度上得益于戰爭中隱蔽通信的需要。我國古代有文字可考的最早的信息隱藏見于《六韜》中對“陰符”的記載。其辦法是先制造形制、花紋不同的兵符,每一種表示一種固定的含義。這種含義須事先約定好,只有當事人可以理解,即使被敵方截獲,他們也不會知道其中的含義。

在教學《數據與計算》(高中信息技術必修模塊1)中關于信息加密的時候,筆者給學生介紹了密碼的加密解密技術,并在網頁上演示了圖片隱寫術的做法,不想引起了學生極大的學習興趣。于是筆者就產生了想法:用Python的PIL庫來實現圖片隱寫術,從而讓學生深入理解信息的編碼原理和規則。

● 圖片隱寫術的原理分析

圖片是由一個個像素組成的。在常見的彩色圖片中,每一個像素都由三組數字表示,代表紅色(r)、綠色(g)、藍色(b)三種顏色。其中,每一種顏色的深淺一般由0~255之間的數字表示,即一個字節(8個Bit),因而在Windows中查看這類圖片的屬性,會看到其位深度為“32”,如圖1所示。

圖1

既然每一個像素的單種顏色是采用8位來存儲,那么如果改變其最低位的值,對整個圖片來說,其視覺效果變化就很小,通過肉眼是看不出來的,如當一組顏色白色(255,255,255),變為(254,255,255)時,幾乎沒有區別,因為差距僅僅是1/255。如下頁圖2所示的兩張小狗,其中一張加入了隱藏的信息,但是幾乎看不出任何區別。

那么,對于一張大小為800*600的圖片來說,就有800*600*3個位的空間可用于隱藏信息。只要將待隱藏的文字信息轉換為二進制,再將每個二進制碼存儲在圖片的像素中,就達到了隱藏信息的目的。

● 編程實現:將加密信息寫入圖片

Python的PIL庫可以讀取圖片的信息,包括所有的像素顏色。這就需要編寫一段代碼,逐步完成如下工作:

①獲取原圖片的所有像素,將每一個像素顏色的數字最低位變為“0”;

②將待隱藏信息轉換為二進制字符串,如果位數不夠8個時,在最高位補0;

③將二進制的待隱藏信息依次與圖片中每個像素的r、g、b顏色數字進行相加,形成新的圖片。

為了方便調用,筆者編寫了三個函數,分別實現這些功能,函數代碼如圖3、圖4、圖5所示。

準備工作已經完成,接下來要隱藏信息就調用“encodeDataInImage”函數。為了方便理解,筆者在代碼中輸出了一些特定的信息,如加密后的二進制代碼和加密后的像素,具體效果如下頁圖6所示。

圖6

在運行代碼后,目錄中將多出一張名稱為“加密.png”的圖片。這就是加密過的圖片。用肉眼你肯定看不出有任何變化,因為僅僅改動了17個像素,而且這17個像素的變化又非常小。需要注意的是,選擇的“原始.png”圖片不支持“透明”,即沒有透明度的信息,支持“透明”的PNG文件的每一個像素是4組數字。

● 代碼編寫:提取圖片中的加密信息

在得到加密后的圖片后,下一步的工作就是解密,以驗證這一做法是否可行。需要完成如下工作:獲取圖片的所有像素,將像素值的最低位取出并拼接為一個二進制字符串。需要注意的是,我們只要把“有效”的信息取出即可,如果二進制字符串出現連續的16個以上的0,說明后面就不存在有效信息了。

獲取存儲的信息的二進制值,按每8位為一組,將上述二進制轉換為十進制形式,再轉換為Bytes類型,用decode將十進制轉為字符并存儲到字符串中。

同樣為了方便調用,筆者分別編寫了兩個函數來實現以上功能(如圖7、圖8)。

分別執行decodeImage和binaryToString兩個函數,即可輸出解密后的信息,如圖9所示。

圖9

● 項目總結

實現圖片隱寫術的方法很多。本案例僅僅使用了一個像素單色數據的最低位,如果要隱藏更多的信息,甚至可以利用這個字節的后四位。當然,如果使用了后四位來加密,那么用于加密的原始圖片的背景顏色最好比較復雜,這樣加密后就不容易被發現,不能選擇存在大片相同顏色的圖片,如藍天白云的風景圖。此外,用于加密的原始圖片可以是任意格式,但是保存后的圖片需要用PNG或者BMP格式,即未壓縮格式,不然加密后的圖片一旦被壓縮,信息就被破壞了。

計算機的發明和密碼破譯有著千絲萬縷的關系,信息的編碼又是加密和解密的基礎。本案例涉及了字符編碼、圖片編碼、進制轉換、Python編程等方面的知識,將知識學習融入到有意義的探究過程之中,值得作為一個信息技術實驗讓學生在課堂上研究。本案例代碼還有很多細節可以讓學生探究,如為什么出現16個0就說明后面的信息是無效的、為什么加密時二進制字符串(binary)的長度要按照3的倍數進行補足等。

此外,信息的加密解密是一個很不錯的信息技術學習主題,完全可以作為一個項目讓學生深入研究。有趣的是,筆者的學生在研究完這個案例后,就開始研究如何在聲音和視頻中隱藏信息。雖然他們可能會遇到很多困難,但這一探究過程對他們學習信息技術有著非常重要的意義。

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
大眾創業(2009年10期)2009-10-08 04:52:00
展會信息
展會信息
展會信息
展會信息
展會信息
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 国产午夜不卡| 亚洲欧美另类久久久精品播放的| 国产精欧美一区二区三区| 91po国产在线精品免费观看| 亚洲视频在线网| 久久国产高清视频| 国产一区亚洲一区| 欧美一级一级做性视频| 亚洲高清无码久久久| 亚洲欧洲日韩久久狠狠爱| 色香蕉网站| 色综合久久无码网| 9久久伊人精品综合| 欧美一级片在线| 色偷偷一区二区三区| 一个色综合久久| 国产三级国产精品国产普男人| 热99精品视频| 久久精品一卡日本电影| 久久毛片网| 国产又粗又猛又爽视频| 国产一区二区网站| 日韩av高清无码一区二区三区| 91丝袜乱伦| 九九热视频精品在线| 国产成人综合在线观看| 日日拍夜夜嗷嗷叫国产| 国产乱人激情H在线观看| 制服丝袜无码每日更新| 亚洲成人高清无码| 午夜小视频在线| 精品少妇人妻一区二区| 无码AV日韩一二三区| 国产白浆视频| 亚洲欧美日韩天堂| 国产一区二区色淫影院| 国产男人的天堂| 久久不卡国产精品无码| av天堂最新版在线| 中字无码精油按摩中出视频| 亚洲国产精品一区二区第一页免| 亚洲综合第一区| 99国产精品免费观看视频| 国产网站免费看| 国产激情影院| 中国精品久久| 久久一级电影| 欧美亚洲一二三区 | 国产亚洲精品97在线观看| 欧美日韩专区| 黄色成年视频| 91精品啪在线观看国产60岁| 精品伊人久久久久7777人| 午夜爽爽视频| 丝袜亚洲综合| 99热这里都是国产精品| 91毛片网| 中文字幕66页| 萌白酱国产一区二区| 嫩草国产在线| 亚洲天堂精品视频| 国产精品99久久久久久董美香| 亚洲无码高清一区| 亚洲精品福利网站| 亚洲区视频在线观看| 精久久久久无码区中文字幕| 日韩高清成人| 亚洲无码91视频| 精品無碼一區在線觀看 | 黄色网址免费在线| 日韩精品无码免费一区二区三区 | 国产免费福利网站| 免费国产在线精品一区 | 特级aaaaaaaaa毛片免费视频| 中文字幕资源站| 国产91高跟丝袜| 免费看黄片一区二区三区| 噜噜噜久久| 中文字幕久久亚洲一区| 国产日韩丝袜一二三区| 色综合色国产热无码一| 午夜影院a级片|