📄 sslrandom.java
字号:
/****************************************************************
* 软件:Java签名协议扩展 (Java Signature Protocol Extension, JSPE)
* 版本:V1.0
* 软件功能:实现SSL签名协议
* 模块:公共类SSLRandom
*-----------------------------------------------------------------
* 版权所有:中山大学软件研究所 2002
* Programmed by 佛山张峰岭 fszfl@21cn.com
* 2002.4 - 2002.5
*****************************************************************/
package com.zsusoft.zfl;
import java.util.*;
import java.io.*;
import java.security.*;
/**************
* 类SSLRandom实现SSL签名协议中的Random结构。
***************/
class SSLRandom implements Serializable{
/**
* UNIT 40位格式的请求者内部时钟。如果无法提供填0也可
**/
public long gmt_unix_time;
/**
* 由安全的随机数生成器生成的随机数
**/
public byte[] random_bytes=new byte[28];
/**
* 本构造函数可以产生新的SSLRandom对象,本函数自动填充好需要的信息
**/
public SSLRandom() throws Exception{
gmt_unix_time=(new Date()).getTime();
SecureRandom srand=SecureRandom.getInstance("SHA1PRNG","SUN");
srand.setSeed(gmt_unix_time);
srand.nextBytes(random_bytes);
}
/**
* 本构造函数用参数的数据恢复SSLRandom对象
**/
public SSLRandom(long time,byte[] random){
gmt_unix_time=time;
if(random.length!=28) throw new IllegalArgumentException("随机数序列必须28字节");
random_bytes=random;
}
/**
* 把SSLRandom对象内容转换成可视字符串
**/
public String toString(){
String msg;
msg="<SSLRandom>\r\n";
msg+="gmt_unix_time:"+(new Date(gmt_unix_time)).toString()+"\r\n";
msg+="random_bytes(Hex value):"+Conversion.byteArrayToHexString(random_bytes)+"\r\n";
msg+="</SSLRandom>\r\n";
return msg;
}
/**
* 与另外一个SSLRandom对象进行精确比较,内容相等返回true,不相等返回false
**/
public boolean equals(SSLRandom other){
if (gmt_unix_time != other.gmt_unix_time) return false;
for (int i = 0; i<random_bytes.length; ++i)
if ( random_bytes[i] != other.random_bytes[i] ) return false;
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -