固定长度随机数生成器

public String generateToken() throws Exception {
    String token = System.currentTimemillis() + new Random().nextInt() + "";
    MessageDigest md = new MessageDigest("md5");//可得到数据的摘要指纹,长度一致
    byte[] md5 = md.digest(token.getBytes());//长度统一为16字节
    BASE64Encoder encoder = new BASE64Encoder();//可以将任何字节数组转换为正常的字符串
    return encoder.encode(md5);
}

BASE64Encoder在JSE的API文档中是找不到的,它不是SUN公司正式发布的API,可以通过在Eclipse中使用后查看相关信息

BASE64Encoder编码将3个字节即24位的二进制码自动转换为4个字节即32位的二进制码,它将原来的24位按每份6位分成4份,再在每份的前面2位补0,而实现,所以该编码生成的每个字节的数据范围是:00000000——00111111即0到63,共64个数据,每个数据单独对应一个唯一的数据信息。 


可以用来防止表单重复提交:
用户访问页面时,服务器随机生成一个标识符token保存到会话中,并以隐藏元素形式回写到表单中,处理表单后删除会话中的token属性
用户提交表单后,服务器进行验证:
1,是否有token元素,有就进行下一步,没有就不处理表单
2,会话中是否有token属性,有就进行下一步,没有就不处理表单
3,会话中的token属性值是否与用户提交的相同,相同就进行下一步,不同就不处理表单
4,处理表单,并将会话中的token属性删除

这是服务器端防止表单重复提交的方法,客户端要要通过js代码来控制.



你可能感兴趣的:(固定长度随机数生成器)