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
主站蜘蛛池模板: 91av成人日本不卡三区| 国产精品午夜福利麻豆| 亚洲日本中文字幕天堂网| 国产精品露脸视频| 亚洲日本中文字幕乱码中文| 欧美va亚洲va香蕉在线| 久久精品无码一区二区国产区| 91精品网站| 呦女亚洲一区精品| 国产成人久视频免费| 亚洲日韩每日更新| 九色91在线视频| 最近最新中文字幕在线第一页| 精品少妇人妻一区二区| 波多野结衣二区| 最新国产你懂的在线网址| 2020国产精品视频| 四虎永久免费地址在线网站 | 欧美日韩综合网| www.亚洲一区| 日本在线免费网站| 国产成人精品日本亚洲77美色| 久久99久久无码毛片一区二区| 欧美A级V片在线观看| 国产免费人成视频网| 中文字幕欧美成人免费| 久久中文字幕2021精品| 人人看人人鲁狠狠高清| 亚洲第一成人在线| 91成人在线观看视频| 国产精品手机视频一区二区| 国产va在线观看免费| 亚洲国产成人精品青青草原| 18黑白丝水手服自慰喷水网站| 欧美一级特黄aaaaaa在线看片| 日本久久网站| 色九九视频| 草草影院国产第一页| 精品久久久久久成人AV| 91精品国产自产在线老师啪l| 国产在线观看高清不卡| 亚洲欧美日本国产综合在线 | 亚洲午夜综合网| 色哟哟国产精品一区二区| 欧美、日韩、国产综合一区| 国产激情影院| 日本午夜在线视频| 日本亚洲最大的色成网站www| 国产a网站| 亚洲另类第一页| 亚洲Va中文字幕久久一区| 国产农村1级毛片| 日韩天堂在线观看| 麻豆国产精品一二三在线观看 | 直接黄91麻豆网站| 狠狠综合久久| 国产精品久久久久久搜索| 精品小视频在线观看| 5555国产在线观看| 国产美女精品一区二区| 91亚洲免费| 三上悠亚精品二区在线观看| 国产欧美日韩资源在线观看| 9丨情侣偷在线精品国产| 91福利在线看| 国产亚洲精品在天天在线麻豆| 99re在线免费视频| 26uuu国产精品视频| 五月六月伊人狠狠丁香网| 国产玖玖视频| 国产成人调教在线视频| 午夜福利亚洲精品| 亚洲香蕉在线| 国产一区二区精品福利| 欧美日韩第二页| 国产大片喷水在线在线视频 | 动漫精品中文字幕无码| 国产一二三区在线| 亚洲无线观看| 欧美成人手机在线观看网址| 国产麻豆永久视频| 精品人妻一区无码视频|