ГОСТРИСО 28640 - 2012
LET Ql = 86
DECLARE NUMERIC Q2
LET Q2 = 197
DECLARE NUMERIC Q3
LET Q3 = 447
DECLARE NUMERIC W
LET W = 32
REM
(4494**4444**44»*+**+*4+**444449*+**4444*444
FUNCTION init_gfsr5(s)
DECLARE NUMERIC i. j. к
DIM x(P)
LET s = And32(s . MskF.f)
FOR i=0 TO P-I
LET x(i) = SR32U(s .31)
LET s = Mul32U( 1664525 . s) + 1
LET s = And32(s . MskF.f)
NEXT 1
LET k=0
FOR i=0 TO P-1
LET stated) = 0
FOR jeOTO W-l
LET stated) = Or32(statc(i) . x(k))
LETx(k)=Хог32(Хог32(Хог32(х(к)
xi REMAINDER!к+Ql,P)))
x( REMAINDER!к+Q2,P)))
x(REMAINDERS + Q3 . P)))
LET к = к + 1
IF к = P THEN LET К = 0
NEXT j
NEXT I
Adeline Ql 86
!#dcfine Q2 197
!#dcfine Q3 447
/* W должно быть степенью 2 */
!#dcfine W 32
DIM statc(P)!static unsigned long statc|P);
DECLARE NUMERIC staiejfstatic int statc.i;
void init_gfsr5(unsigned long s) |
int i. j. k:
static unsigned long x[PJ:
s &= OxffffffffUL;
for (i=0: i<P: i++) (
x| i1 = s » 3 1;
s = 1664525UL * s + 1UL:
s &= OxffffffffUL:
I
for (k=0.i=0; i<P: i++) ]
state|i] = OUL;
for (j=0;j<\V: j++) ]
LET stated) = SL32U(statc(i) . 1)state(i) « = 1;
stated] 1= x[k);
x|k] Л= x](k+Q 1)%P| л x|<k+Q2)<£P| л
x|(k+Q3)%P|:
k++:
if (k==P) к = 0:
1
LET statc_i = 0! statc_i = 0;
END FUNCTION
REM
/ 4 * 9 4 * 9 4 * 9 4 4 * 4 4 * 4 * * 4 * * * 4 9 4 * 9 4 4 4 * * * * * * 4 * 9 4 * 9 4 * * * 4 * 9 4 * 4 4 * 9 4 * 9 4 * 9 4
4 4
.* 4 + /
FUNCTION gfsr5.’unsigned long gfsr5(void)]
DECLARE NUMERIC 1!int i;
25