浏览器中显示的图像数据通常以明文形式在网络上传输。即使在网络上以加密模式传输,也需要在进入浏览器之前解密并存储在缓存中。前者容易被程序或插件监控,而后者可能存在信息泄漏,从而导致安全问题。为了解决这个问题,图像数据在服务器上被加密并在网络上传输。进入浏览器后,javascript负责解密并在浏览器上显示。因此,它既不会被监控,也不会存在于缓存中,并且不会有安全问题。1一般想法javascript通过xmlhttp技术向服务器发送请求,并从服务器获得响应。然而,加密数据是二进制数据,xmlhttp还没有发展到接收二进制数据。因此,在服务器端,不仅需要加密,还需要将加密的数据编码成xmlhttp可以接收的数据。这里可以使用任何编码,甚至自定义编码。这里也使用base64编码,因为下面使用了base64编码。javascript代码通过xmlhttp技术获得加密和编码数据后,通过解码和解密形成原始图像数据。然而,html标准没有提供通过原始数据显示图像的方法。作为替代方案,html标准允许用base64编码的图像数据显示图像。它的方式是base64数据是base64编码的图像数据。Base64编码Base64编码以3字节为一组进行编码,编码结果为4字节。编码前的字节字符串称为源字符串,编码后的字节字符串成为目标字符串。编码过程:根据源字符串第一个字节的前6位获取索引,然后根据表1所示的编码表获取目标字符串的第一个字节;通过将第二字节的前4位与源字符串的第一个字节之后的2位相加来获得索引,然后根据表1获得目标字符串的第二个字节。通过将第三字节的前2位与源字符串的第二字节之后的4位相加来获得索引,然后根据表1获得目标字符串的第三字节。根据源字符串第三个字节的最后6位获得索引,然后根据表1获得目标字符串的第四个字节。根据逆编码过程执行解码。如果源字符串的最后一个字节被保留,那么目标字符串的第一个字节和以前一样。根据表1,目标字符串的第二个字节是通过在源字符串的第一个字节之后的2位上加上4个零来获得的。目标字符串的第三和第四个字节是“=”。如果源字符串的最后两个字节是剩余的,那么目标字符串的前两个字节和以前一样;根据表1,目标字符串的第三个字节是通过在源字符串的第二个字节之后的4位上添加2个零来获得的。目标字符串的第四个字节是“=”。完成base64编码的Javascript代码如下:varkeystr=' abcdefghijkmnoqrstuvwxyz 0123456789/=';函数encode64(输入){ var输出=' ';var chr1,chr2,chr3=var enc1,enc2,enc3,enc4=var I=0;do { chr 1=input . CharCodeat(I);chr 2=input . Charcodeat(I);chr 3=input . Charcodeat(I);enc 1=chr 1 2;enc 2=((chr 1 3)4)|(chr 2 4);enc 3=((chr 2 15)2)|(chr 3 6);enc4=chr3 63if(iSNAN(chr 2))enc 3=enc 4=64;否则如果(iSNAN(chr 3))enc 4=64;output=output KeyTr . CharaT(enc1)KeyTr . CharaT(enc2)KeyTr . CharaT(enc3)KeyTr . CharaT(enc4);同时(输入长度);返回输出;为了编程方便,64被用作结束填充字节的索引,而“=”被用作对应于索引64的字符。解码功能是解码64,稍微编码。3服务器端加密和解密因为具体的加密和解密方法不在本文的讨论范围内,所以这里只对原始数据的每个字节加1进行加密。示例代码如下:$f=fopen('c:/a.gif ',' r ');$c=fread ($f,file size(' c :/a . gif ');$ len=strlen($ c);对于(I=0;$ i $ len$i )$c{$i}=chr(订单$ c { $ I })1;echo base64 _ encode($ c);这个php示例代码对客户端进行加密和编码c:\a.gif。4客户端解码、解密和显示图像的示例代码如下:var bb=decode 64(a);var bb _ 1=“”;(I=0;I t=bb . Charcodeat(I)-1;if(t0)t=t 256;

bb_1=bb_1字符串。}

var cc=encode 64(bb _ 1);var p=document . GetElementbyId(' pic ');p.innerHTML=此代码首先调用getfile函数获取服务器发送的图像的加密和编码数据,然后解码和解密得到原始图像数据,然后用base64编码在pic层显示图像。5 Conclusion这种通过javascript对来自服务器的加密和编码数据进行解码和解密,并显示用base64编码的图像的方法非常实用,有效地避免了信息泄漏。参考: [1]戴维斯硕士,菲利普斯j . a .学习PHP MySQL中文版[男]。车丽红,于,郭燕,译。北京:中国电力出版社,2007。

[2]弗拉纳根D.JavaScript权威指南[M]。北京:机械工业出版社,2007 2007。

[3]强大的JavaScript核心技术[M]。北京:机械工业出版社,2007。

。i){