⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blumshub.cpp

📁 通訊保密編碼library project code.完整library project code!
💻 CPP
字号:
#include "blumshub.h"

BlumBlumShub::BlumBlumShub(const bignum &p, const bignum &q, const bignum &seed)
    : phi((p-1)*(q-1)),
      n(p*q),
      x0(a_times_b_mod_c(seed, seed, n)),
      maxBits(BitPrecision(n.BitCount())-1)
{
    current = a_times_b_mod_c(x0, x0, n);
    bitsLeft = maxBits;
}

int BlumBlumShub::GetBit()
{
    if (bitsLeft==0)
    {
        current = a_times_b_mod_c(current, current, n);
        bitsLeft = maxBits;
    }

    return current[--bitsLeft];
}

byte BlumBlumShub::GetByte()
{
    byte b=0;
    for (int i=0; i<8; i++)
        b = (b << 1) | BlumBlumShub::GetBit();
    return b;
}

void BlumBlumShub::Seek(unsigned long index)
{
    bignum exp = a_exp_b_mod_c (2, ((index*8) / maxBits + 1), phi);
    current = a_exp_b_mod_c (x0, exp, n);
    bitsLeft = maxBits - int((index*8) % maxBits);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -