固定长度随机数生成器

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代码来控制.

时间: 2024-11-05 14:55:05

固定长度随机数生成器的相关文章

Dart生成固定长度随机数

背景:需要生成一个随机数作为api参数实现: import 'dart:math'; /// dart 生成固定随机数 void main(){ String alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'; int strlenght = 30; /// 生成的字符串固定长度 String left = ''; for (var i = 0; i < strlenght; i++) { // right = r

【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器

               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 前言 真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的.而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的.我们可以这样

开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器

原文:[原创]开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 前言 真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的.

C语言下泊松分布以及指数分布随机数生成器实现

最近实验室的项目需要实现模拟文件访问序列,要求单位时间内的数据请求次数符合泊松分布,而两次请求见的时间间隔符合指数分布.没办法只好重新捡起已经丢掉多时的概率知识.于是也就有了这篇关于在C语言下符合泊松分布和指数分布的随机数生成器的实现. 泊松分布 在实际的事例中,当某一事件,比如进站乘客数量,电话交换机接收到的通话请求以固定的瞬时速率λ独立且随机地出现时,就可以认为该事件在单位时间内发生的次数符合泊松分布. 首先必须由二项分布引出: 如果做一件事情成功的概率是 p 的话,那么独立尝试做这件事情

浅谈随机数生成器及其应用

[导读] 相信来看的读者一定知道在stdlib.h中的rand(),开始觉得它是一个很神奇的东西,绞尽脑汁都想不出它是如何做到的,于是查了下资料知道了如下几点 Windows随机函数产生的随机数不是真正意义下的随机数,而是通过一个随机数种子,然后一些公式,不断地得到下一个"随机数",然后将种子改成这个随机数,然后再不断这样继续. 通过单纯的编程很难得到一个真正的随机函数,UNIX系统下一个随机函数是通过硬件的信息(例如硬件发出的噪音)等等来得到的随机数. 所以经常会出现这样的情况 然后

【BZOJ3671】[Noi2014]随机数生成器 暴力

[BZOJ3535][Noi2014]随机数生成器 Description Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第2行包含三个整数 N,M,Q ,表示小H希望生成一个1到 N×M 的排列来填入她 N 行 M 列的棋盘,并且小H在初始的 N×M 次交换操作后,又进行了 Q 次额外的交换操作.接下来 Q 行,第 i 行包含两个整数 u_i,v_i,表示第 i 次额外交换操作将交换 T_(u_i )和 T_(v_i ) 的值.

随机数生成器

public static class RandomHelper { /// <summary> /// 随机数生成器 /// </summary> public static Random Generator { get; } = new Random(SystemRandomInt()); /// <summary> /// 使用RNGCryptoServiceProvider生成真正随机的二进制数据 /// </summary> public stat

一、解密随机数生成器(1)——真随机数生成器(转)

解密随机数生成器(1)--真随机数生成器 从小就一直很好奇,MP3播放器的随机播放功能是如何实现的,今天读到一篇关于随机数的文章,又勾起了我的那时好奇心,索性上下求索,了解了随机数背后的很多知识,顿觉豁然开朗,特意写这篇文章和大家总结分享一下. 其实,随机数在我们身边无处不在.无论是玩扑克牌麻将骰子时的点数,玩LOL时的玩家匹配,还是高大上的量子物理,核聚变,都无一例外地随机数有关,在混沌理论中,这个世界本身就是一系列随机过程的产物--好吧,有点激动,扯得太远了--作为编程爱好者,应该会发现,每

【BZOJ】【3671】【NOI2014】随机数生成器

贪心 嗯……其实生成这个矩阵就是一个$O(n^2)$的模拟 = = 然后?字典序最小?贪心呗= =能选1就选1,然后能选2就选2…… 我们发现,对于矩阵(1,1)~(n,m),假设1的位置是(x,y),那么我们选完1以后,可选的范围变成了:(1,1)~(x,y) & (x,y)~(n,m),也就是将一个矩阵拆成四块,我们可以在左上和右下两块中递归地进行选择…… 那么我们每次选完之后,新的可选的范围其实暴力O(n)维护就可以了,因为我们总共只选$O(n)$次,每次维护的复杂度是$O(n)$,总复杂