您的位置:首页 > 编程语言 > Java开发

JavaWeb学习笔记之表单数据处理类

2015-09-26 10:13 267 查看

一、*在现实安全注册与登陆操作中,对表单的校验基本都通过JavaScript脚本语言进行校验。但是,javascript脚本语言也存在一些表单校验的局限性。表单处理类主要执行两方面的内容:一方面是将表单信息中的密码进行MD5转码;另一方面是校验表单中的信息是否存在非法的字符,在这里主要校验SQL注入的非法字符。

1、创建将指定字符串进行MD5转码的encode()方法

import java.security.*;//为安全框架提供类和接口
public class Encrypt {

//创建指定字符串进行MD5转码的encode()方法,该方法返回值为String类型,该返回值为进行MD5转码后的字符串。
public static String encode(String str){
if(null == str){
return null;
}
StringBuilder sb = new StringBuilder();//创建一个可变字符序列的对象
try {
//创建具体指定算法名称的信息摘要
MessageDigest code = MessageDigest.getInstance("MD5");
code.update(str.getBytes());

//使用指定的字节数组对摘要进行最后的更新,然后完成摘要计算
byte [] bs = code.digest();

//进行指定算法的计算
for(int i=0;i<bs.length;i++){
int v= bs[i] & 0xFF;
if(v < 16){
sb.append(0);
}
//向可变字符序列添加转码后的字符串
sb.append(Integer.toHexString(v));
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return sb.toString().toUpperCase();
}
}


首先生成MD5信息摘要MessageDigest对象,然后调用digest()方法对字符串的字节数进行加密,得到一个加密后的字节数组,该字节数组被转换成十六进制的字符串,变成大写形式,便生成了一个长度为32位的密码字符串

2、JUnit测试代码

public class MD5test {
@BeforeClass
public static void setUpBeforeClass() throws Exception {

}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Test
public void test() {
String str1 = "abcd";
String str2 = Encrypt.encode(str1);
System.out.println("转码前的字符串:"+str1);
System.out.println("转码后的字符串:"+str2);
}


测试结果

转码前的字符串:abcd
转码后的字符串:E2FC714C4727EE9395F324CD2E7F331F


3、创建校验指定字符串是否存在非法字符

public static boolean isValidInput(String str){
return str.matches("[a-z0-9]+");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: