JSp开发的应用程序大多在互联网环境下运行, 由于互联网及其协议的开放性, 资源公开程度毫无疑问是相当高的。 这样会带来一系列安全性问题, 常见的如:
a、 传输的重要信息被黑客拦截, 从而造成损失。 例如电子上午系统中的银行账号和用户密码被黑客拦截
b、 WEB服务器控制权被黑客获得, 从而导致网站整体瘫痪
c、 JSP页面被黑客篡改, 导致出现各种异常情况
d、 JSP页面被未经授权的用户访问, 导致重要信息被泄露, 设置数据被破坏
————————————————————常用保护措施———————————————————————————————
1、 加密传输给客户端的文字
即在服务器端将文字加密后再传输给客户端, 这样子在网络上传输的是秘文形式, 采用高强度、高可靠性的加密算法, 就可以解决信息传输过程中泄密问题, 在此主要介绍两种常用饿算法来机密传递给客户端的文字。
DES算法
MD5算法
——————————————DES算法简介
目前DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、告诉公路收费站等领域被广泛应用, 实现关键数据的保密, 如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等, 均用到DES算法。
DES算法的入口参数有3个: Key、 Data、 Mode。 其中Key为8个字节共64位,是DES算法的工作密钥; Data也为8个字节64位,是要被加密或被解密的数据, Mode为DES的工作方式, 有两种: 加密或解密。
加密解密还分为 对称性与非对称性, 关于这方面的具体知识及其工作原理请参考其他书籍
——————————————-下面是我练习时的源代码:
Bean类:
package cn.com.jspSave;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import com.sun.java_cup.internal.internal_error;
import com.sun.jndi.url.corbaname.corbanameURLContextFactory;
/**
Administrator: lsy
2009-9-6
安全程序 DESede/DES加密
*/
public class DESede {
private byte[] cipherByte;
public String run(String s){
//添加新安全算法 如果用JCE就要把它添加进去
Security.addProvider(new com.sun.crypto.provider.SunJCE());
String Algorithm = "DES"; //定义加密算法, 可用DES,DESede, Blowfish等
String myinfo = s;
try{
//生成密钥
KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
SecretKey desKey = keygen.generateKey();
//加密
Cipher cipher = Cipher.getInstance(Algorithm);
cipher.init(Cipher.ENCRYPT_MODE, desKey);
cipherByte = cipher.doFinal(myinfo.getBytes());
}catch (Exception e) {
System.out.println("加密出现了异常");
e.printStackTrace();
}
return byte2hex(cipherByte);
}
public String byte2hex(byte[] b){//二进制转字符串
String hs="";
String stmp ="";
for(int n=0; n<b.length; n++){
stmp = (Integer.toHexString(b[n]& 0xFF));
if(stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
if(n<b.length-1) hs=hs+":";
if((n!=0)&&(n%16==0)) hs=hs+"<br>";
}
return hs.toUpperCase();
}
}
JSP页面:
<body>
This is my JSP page. <br>
JAVABean 实现加密示例<hr>
<%
String shige="滕王高阁临江渚, 佩玉鸣鸾罢歌舞。 <br>"
+"画栋朝飞南浦云, 珠帘暮卷西山雨。 <br>"
+"闲云潭影日悠悠, 物转星移几度秋。 <br>"
+"阁中帝子今何在? 槛外长江空自流。<br>";
String shige2 = des.run(shige);
%>
加密文字: <br> <%=shige %>
<p align="center">加密结果 = <br>
<%=shige2 %>
</body>
运行效果:
加密文字:
滕王高阁临江渚, 佩玉鸣鸾罢歌舞。
画栋朝飞南浦云, 珠帘暮卷西山雨。
闲云潭影日悠悠, 物转星移几度秋。
阁中帝子今何在? 槛外长江空自流。
加密结果 =
ED:96:7D:90:15:6C:FB:D0:10:E9:5E:E1:ED:F5:EA:02:9C:
B7:5E:83:BD:CD:E9:77:CF:37:8D:0D:5B:82:BC:37:BB:
2C:70:1E:B1:55:B3:EE:E5:EA:CB:93:48:A4:83:BD:8F:
63:1D:61:BD:6A:67:5D:E1:AB:90:D4:D9:00:1A:9B:E6:
CD:CE:D9:A0:80:6B:49:20:D1:88:C3:AB:5F:0B:60:18:
91:D5:36:F2:37:28:24:A6:2C:3C:8B:AF:3E:C1:58:54:
2A:16:28:49:6F:A0:5D:CC:25:9F:D9:FC:03:29:EB:B2:
FB:28:B2:DF:83:CA:B1:F3:68:33:17:5D:1C:03:14:7A:
C7:C9:CF:72:97:42:7E:A9:F8:4D:BB:52:D2:02:D5:0F:
9E:D8:2E:29:36:D5:D2