ГОСТРИСО 28640 - 2012
П рим ечание - Соответствующий текст нрофаммы трсхпарамсгрического GFSR на ятыкс BASIC
приведен для ин<|>ормаиии
КНМ(+»*»*-+*+»+»+»*+***+**»+»+‘**’**+»+»+**+*4*+»*»+
КЕМ Текст программы трсхпарамстричсского GFSR на языке BASIC
КЕМ ♦»+•♦*
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 9 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 9 4 4 /
OPTION BASE 0
КЕМ
, 4 4 4 4 9 4 4 4 4 4 4 4 4 4 4 9 4 4 4 9 4 4 9 4 9 4 4 4 4 4 4 4 4 4 4 4 4 4 4 9 4 4 9 4 9 4 4 4 4 4 4 4 9 4 4 4 4 9 4 4 4 4 4 4 4 4 4 4 9 4 4 4 4 4 4 4 4 9 4 ,
DECLARE NUMERIC Р
LET P e l279
!#dcfinc P 1279
DECLARE NUMERIC Q
LET Q=418
!#dcfinc Q 4 18
DECLARE NUMERIC W
/* значения W должны быть степенью 2 */
LET W=32
!#dcfinc W 32
DIM statc(P)
DECLARE NUMERIC state i
[static unsigned long state(P]
[static INT state_i;
REM
f 4 4 4 * 4 4 4 4 4 4 4 4 4 4 4 4 4 » 9 4 9 4 9 4 9 4 9 4 9 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 * 4 * 4 4 * 4 4 4 4 9 4 9 4 9 4 9 4 4 4 4 9 4 9 4 /
DECLARE NUMERIC i.j.k
DIM x(P)
LET s = And32(s , MskP.f)
FOR i = 0 TO P -I
LET x(i) = SR32U(s .31)
FUNCTION init_gfsr(s)!void init_gfsr(unsigncd long s)|
int i. j. k;
static unsigned long x|P);
s &= OxffffffffUL;
for (i=0: i<P: i++) |
x(i| = s » 3 1:
s = 1664525UL * s + IUL:
s &= OxffffffffUL:
LET s = Mul32U( 1664525 . s) + 1
LET s = And32(s. M skF.f)
NEXT I
LET k=0
FOR i = 0 TO P -1
LET state(i) = 0
FOR j=0 TO W-I
LET x(k) = Xor32(x(k) . x
(REMAlNDER(k + Q . P)))
LET k = k + I
IF k = P THEN LET k = 0
NEXT j
NEXT I
for (k=0. i=0; i<P: i++) {
state)i | = OUL;
for (j=0: j<W: j++) {
LET state(i) = SL32U(statc(i) . 1)statefi | « = 1;
LET statc(i) = Or32(stale(i) . x(k)>statefi] 1= x(k| :
x1k1 Л= x|(k+Q)%P| :
k+ + :
if (k==P) k = 0;
)
I
LET stalc_i = 0statc_i = 0:
END FUNCTION
21