

摘 ?要:現代社會正處于計算機信息時代,瀏覽器可對網頁的源代碼文件進行規范化的解析,使其Web內容能正常顯示,但是Web服務存在多種數據傳輸格式,不同的數據格式所需存儲方法的實現代碼存在差異,因此需要提高代碼的彈性,以適應未來的各種數據格式。通過介紹Web服務與RESTful技術進行Provider消息處理,利用BufferImage方法針對《蒙娜麗莎》的24位位圖進行解密算法得出新的內容,而利用新的內容反向加密算法即可得到《蒙娜麗莎》的畫像。
關鍵詞:Web服務;RESTful技術;24位位圖;BufferedImage;圖像加密解密
中圖分類號:TP311.1 ? ? 文獻標識碼:A 文章編號:2096-4706(2020)04-0116-03
Abstract:Modern society is in the computer information age,the browser can be standardized parsing for Web source code files,make its Web content display properly,but there are many data transmission format for Web services,the storage method of the different data format required for the implementation of the code is different,so you need to improve the flexibility of the code,so as to adapt to a variety of data format in the future. By introducing Web services and RESTful technologies for Provider message processing,BufferImage method is used to decrypt the 24-bit bitmap of Mona Lisa to obtain new contents,while the new content reverse encryption algorithm is used to obtain the portrait of Mona Lisa.
Keywords:Web services;RESTful technology;24-bit bitmap;BufferedImage;image encryption and decryption
0 ?引 ?言
隨著萬維網時代的發展,不同信息在進行交互時,數據格式可能存在一定的差異性。如果每次更改存儲信息數據方法的代碼,會使得代碼的彈性不夠,也很難進行拓展,無法適應Media-Type、Mine-Type和Content-Type等各種類型格式,因此本文提出一種更有彈性的編碼方式,同樣可以實現該需求,即使用Web服務實現編碼。圖像這種文件,已經滲透到我們的生活中,人的眼睛就是最明顯的成像工具,大到一片天空,小到一粒塵埃,它們之間是否會存在聯系;圖像和非圖像文件之間又是否可能存在聯系,這些問題的答案都存在于信息世界中。
1 ?Web服務的概念
在談到Web服務前,可以先聯想生活中形形色色的服務,其相同的特點就是為了實現某項功能而產生的應用。以此引申,計算機中的服務是指通過計算機來實現某個具體功能,比如提供計算器上的加減乘除算法是一種服務;提供各國語言翻譯的功能是一種服務;根據用戶輸入的矩形中心點和長度寬度為用戶畫一個矩形也是一種服務等。再對計算機服務進行劃分,就可以理解到Web服務了,Web可以直譯為網絡,Web服務就是指使用HTTP或HTTPs協議接受用戶的請求并以網絡為媒介提供功能服務的方式。
比如一種常見的Web服務,用戶在瀏覽器的地址欄中輸入https://www.taobao.com之后點擊跳轉,瀏覽器為用戶解析地址過后,將要訪問的淘寶頁面反饋給用戶。那么,這一簡單的過程就可以理解其為Web服務。首先這個服務是基于HTTPS協議的,包括輸入地址時最前方也加上了協議,方便Web服務器解析,然后,在從地址欄輸入URL到顯示淘寶頁面的整個過程是輸入URI之后點擊跳轉,瀏覽器客戶端將https://www.taobao.com請求發送到服務器,并且確認發送成功后(即該URL存在于服務器中),請求服務器響應,隨后請求將被服務器解析,最后便將其對應的超文本標記語言內容封裝,以網頁形式發送到客戶端顯示出來,一次請求服務也就結束了。
2 ?RESTful的概念
REST是一種利用萬維網技術來構建網絡軟件的構架,也可以理解為是對MVC架構改進后所形成的一種架構,通過定義好的接口與不同的服務連接起來。其基于HTTP,可以使用XML格式定義或JSON格式定義。在目前主流的三種Web服務交互方案中,REST相比于SOAP以及XML-RPC更加簡單并具有可拓展性,也表示數據可以被定義、被發布。
ful本意上并沒有含義,其存在的意義是將名詞構造為形容詞。由此形成的RESTful,無論是對編碼設計還是對URL的處理,都傾向于用更為簡單級、輕量級的方法設計與實現。總之,RESTful并沒有一個明確的Web服務標準,而更像是一種設計的風格。
3 ?24位位圖
位圖(bitmap),亦稱為點陣圖像,是由稱作像素的單個點組成的。使用掃描儀掃描、計算機截屏以及相機拍攝等產生的圖片都屬于位圖,而文件顯示的格式以bmp作為文件后綴名,即標識為位圖文件。位圖的優點是可以體現顏色的細微過渡和變化,以此產生更加真實的效果,缺點是在保存時必須記錄圖中每一個像素的所處的位置和其顏色對應的值,需要較大的存儲空間。
位圖中的一個關鍵因素為色彩深度,或稱色彩位數,即位圖中對于每一個像素,需要使用多少個二進制位的數值來表示對應顏色,這一要素也是圖片分辨率的一個重要指標。根據這一元素可以類推:2位位圖就是黑白圖,8位位圖是指2的8次方,就是256色圖,而24位位圖一般泛指的是RGB三色圖,32位位圖泛指CMYK四色圖。本文使用的圖像即為24位位圖,指圖片每一像素包含2的24次方的信息量,其中R對應紅色基色red,包含2的8次方信息量,G對應綠色基色green,包含2的8次方信息量,B對應藍色基色blue,包含2的8次方信息量。
4 ?BufferedImage
在計算機語言中,Image和BufferedImage都歸于類,區別就是在于,Image是一個抽象類,BufferedImage是Image的實現,其中Buffered本意就是代表數據緩沖區域,所以BufferedImage是帶數據緩沖區的圖像類,使用該類才可以對于圖像進行操作,包括圖片的大小變換、圖片的灰度級變換、圖片的透明度變換等。
通過一個簡單的例子就能明顯區分出BufferedImage與Image的差別,以及在實際操作過程中選用BufferedImage的原因。對于一張圖像而言,首先引入眼球的是它的高度和寬度,如果以二維視角角度出發,也可以將其理解為長度和寬度,那么在計算機語言中,則要通過對應方法顯示圖像的長度與寬度。
使用Image的情形如下:
public Image image;//定義一個Image類的對象image作為公有屬性
int width = image.getWidth();//此處報錯,提示該方法缺少參數
使用BufferedImage的情形如下:
public BufferedImage = image;//定義一個BudderedImage類的對象image作為公有屬性
int width = image.getWidth();//可正確執行
通過了解java.awt中的相關信息可以了解,java.awt.Image圖像類是抽象類,僅提供獲得繪圖對象、圖像縮放、選擇圖像平滑度等功能,而且這些功能恰好都是抽象功能;而java.awt.image.BufferedImage是帶數據緩沖區的圖像類,與上述對于BufferedImage的解釋正好吻合,這些功能則是具體化的,都是人眼可見的。
5 ?《蒙娜麗莎》24位圖像的解密和《達芬奇》24位圖像的加密
先制作一張預處理的蒙娜麗莎24位圖像,如圖1所示,分辨率為1 000*1 531。隨后開始解密過程,按照位圖的理解,該圖像所包含的信息量為1 000像素*1 531像素*3比特的,其中1比特=8字節。解密的總體過程就是將一幅24位的圖像轉化為二進制流。
對應的加密過程以一個算法為中心,即選擇8個字節的最低位字節,實際操作就是將每個像素的每個比特化為二進制數據,提取最后一位二進制數據,進行重新組合,得到的新的字節總數為1 000*1 531*3/8,取得這些數據后,再將全部字節還原成一個新的二進制數據,選擇合適的方式打開,將得到《達芬奇》24位圖像,如圖2所示。值得注意的是,實際處理過程會發現不合理的地方,例如原圖像縱方向為1 531像素,需要提取1 531*3個字節,再組合成8個字節的比特,顯然1 531*3/8并不是整數,那么,對于需要補充的字節,以0進行填充,最后得到結果??傮w過程就是將二進制流轉化為一副24位圖像。
使用Java程序設計的關鍵代碼如下:
//獲取bufferedImage的RGB值數組
publicstaticbyte[] arrayRGB(BufferedImagebufferedImage) {
return (byte[]) bufferedImage.getData().getDataElements (0,0,bufferedImage.getWidth(),
bufferedImage.getHeight(), null);
}
//獲取RGB值數組中的最低位
publicstaticbyte[] lastBitOfArrayRGB(byte[] ArrayRGB) {
byte[] lastBitOfArrayRGB = newbyte[ArrayRGB.length];
for (inti = 0; i lastBitOfArrayRGB[i] = (byte) (ArrayRGB[i] & 0x01); } returnlastBitOfArrayRGB; } //獲取解密信息的長度 publicstaticintlengthOfInformation(byte[] lastBitOfArray RGB) { String length = ""; byte[] temp = newbyte[32]; for (int x = 0; x temp[x] = lastBitOfArrayRGB[x]; } for (int y = temp.length - 1; y > 0; y -= 8) { String binary = ""; for (int z = y; z > y-8; z--) { binary += temp[z]; } length += binary; } returnInteger.valueOf(length,2) * 8; } //將解密信息進行逆寫,注意BMP圖的像素表示順序為為BGR publicstaticbyte[] originByte(byte[] lastBitOfArrayRGB) { byte[] originByte = newbyte[lastBitOfArrayRGB.length]; for (int x = 0; x byte[] temp = newbyte[8]; int y, z; for (y = x, z = 7; y < x + 8 && y temp[z] = lastBitOfArrayRGB[y]; } int flag, flbg; for (flag = x, flbg = 0; flbg originByte[flag] = temp[flbg]; } } returnoriginByte; } //進行base64加密,并寫入MessageBodyWriter Base64 base64 = new Base64(); entityStream.write(base64.encode(realInformation)); 6 ?結 ?論 本文內容主要取材于由江西財經大學聶鵬老師團隊制作并由中國大學慕課網推出的《Web服務與RESTful技術》慕課內容中的消息處理知識點內容。 計算機和萬維網技術的發展,為人們提供了便利,但隨之而來的是信息處理問題,可以選擇以圖像等為載體,通過對圖像的解密和加密,保證信息的完整性。本文以著名的《蒙娜麗莎》為例,經過圖像的微處理,從信息中得到新的信息,即成為一幅新的圖像。 最后,如果使用程序設計繼續對《達芬奇》24位圖像進行解密,又將得到新的內容。選擇合適的方法,比如用記事本打開加密后的二進制流文件,將顯示一句達芬奇對其愛人的告白語,翻譯成中文即為“麗莎·格拉迪尼,生活中‘最可悲的事比過去的痛苦記憶中的快樂還要多。” 參考文獻: [1] 徐彤.基于Web Service的加密算法——以秘密情書為例 [J].現代信息科技,2019,3(2):100-101+105. [2] 張志,胡志勇.RESTful架構在Web Service中的應用 [J].自動化技術與應用,2018,37(10):33-37. 作者簡介:劉家銘(1999-),男,漢族,江西南昌人,本科在讀,研究方向:軟件工程。