int getPeriod();
    int getSeedLength();
}
伪随机数流生成器:
private int read(byte[]buffer,int offset,int num,int bytesRead)
        //递归算法
    {
        if(count + num < maxCount)
        {
            Random.read(buffer,offset,num);
            count + = num;
        }
        else
        {//maxCount- count-1使上面的if语句成立,且使count 一直为零直到最后一次递归
            int firstRead = maxCount-count -1;
            bytesRead = read(buffer,offset,firstRead ,bytesRead);
            RefreshSeed()
                count= 0;
            return read (buffer,offset+firstRead.num-firstRead ,bytesRead );
        }
        return num +bytesRead ;
        }
加扰器:
public int read(byte[] b, int offset, int length)
    {
        checkPositive(length, "BinaryXorInterferer.skip:length<0");
        checkClosed();
        int numHaveRead = m_stream.read(b, offset, length);
        byte[] temp = new byte[numHaveRead];
        //产生伪随机数的位数由读到的数据流位数决定
        m_interfere.read(temp);
        for (int i = 0, j = offset; i < numHaveRead; i++, j++)
            b[j] ^= temp[i];//按位异或
        return numHaveRead;
    }
5.2 控制字层
主要问题:随机数流控制字如何生成和传输?
解决方法:上层需要新的控制字的时候,服务器生成一个然后立即发送。因为无法保证控制字会比几乎同时用的这个控制字加密发送的数据更早到达,所以缓冲一个控制字来解决这个问题。
具体细节:
1.    第一层服务器端仅在需要用到的控制生成序列的时候才调用getSeed函数,这点要求了服务器不用再次“缓存”一个Seed。这是以下协议正确性和可靠性所要求的基本保证。
2.    客户端对象必须首先监听,然后服务器对象在创建时立即发送首个控制字,如此,双方在视频尚未建立的时候拥有首个控制字。
3.    以后,服务器端每次被索取控制字时都产生时都产生下一个控制字并发送给,而返回给索取方的上次产生的控制字。
4.    客户端收到控制字时,首先锁住接收端对象,然后检查接收端对象中的buffer是否为空,若为空(正常情况),则放入新的控制字,否则出错。当新控制字放入后,检查旧控制字是否已经被取出,若已经被取出,则重新将新控制字代替旧控制字。
5.    客户端受到上层的索取消息时,首先锁住对象,然后检查是否“旧控制字”位是否有内容,如果没有,出错;如果有(正常情况),取出旧控制字,然后检查新控制字是否已经到达,若到达,将新控制字替换旧控制字。
上一篇:轻量级企业运行管理综合系统设计+文献综述
下一篇:Android五子棋小游戏开发设计

基于Java和HTML5的企业门户...

基于Android的手机找回APP设计和实现

基于433MHz的智能家居系统设计硬件和驱动层

php企业人事管理系统的设计和实现

jsp+mysql物业管理系统的设计和ER图

PHPStudy天气预报软件的设计和实现

基于安卓视频播放器设计与实现

STC89C52单片机NRF24L01的无线病房呼叫系统设计

基于Joomla平台的计算机学院网站设计与开发

浅谈高校行政管理人员的...

提高教育质量,构建大學生...

上海居民的社会参与研究

压疮高危人群的标准化中...

AES算法GPU协处理下分组加...

浅论职工思想政治工作茬...

酵母菌发酵生产天然香料...

从政策角度谈黑龙江對俄...