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

来源:互联网 发布:ios leancloud数据库 编辑:程序博客网 时间:2024/05/18 03:12

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