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五子棋小游戏开发设计

论利用ebXML和SOAP开发Web服务【2352字】

电子政务环境下公务员的...

用VB实现聊天讨论室和点對点會话【671字】

提高实时操作系统的实时...

抖音短视频用户使用动机研究【2803字】

抖音短视频平台视频推荐模式研究【2528字】

嵌入式数据库典型技术―...

神经外科重症监护病房患...

中国学术生态细节考察《...

国内外图像分割技术研究现状

医院财务风险因素分析及管理措施【2367字】

AT89C52单片机的超声波测距...

10万元能开儿童乐园吗,我...

C#学校科研管理系统的设计

志愿者活动的调查问卷表

公寓空调设计任务书

承德市事业单位档案管理...