APP下载

基于WebService的信息处理算法

2020-07-31刘家铭

现代信息科技 2020年4期
关键词:二进制蒙娜丽莎字节

摘  要:现代社会正处于计算机信息时代,浏览器可对网页的源代码文件进行规范化的解析,使其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进行填充,最后得到结果。总体过程就是将二进制流转化为一副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的writeTo方法

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-),男,汉族,江西南昌人,本科在读,研究方向:软件工程。

猜你喜欢

二进制蒙娜丽莎字节
字节跳动瞄准教育等新业务
有用的二进制
用Scratch把十进制转为二进制
有趣的进度
“蒙娜丽莎”
蒙娜丽莎说
是艺术家还是科学家?
人类进入“泽它时代”