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

一、*在现实安全注册与登陆操作中,对表单的校验基本都通过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]+");
    }

你可能感兴趣的:(java,Web,数据,表单,sql注入)