How to resolve the algorithm Main step of GOST 28147-89 step by step in the BBC BASIC programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Main step of GOST 28147-89 step by step in the BBC BASIC programming language

Table of Contents

Problem Statement

GOST 28147-89 is a standard symmetric encryption based on a Feistel network.

The structure of the algorithm consists of three levels:

Implement the main step of this encryption algorithm.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Main step of GOST 28147-89 step by step in the BBC BASIC programming language

Source code in the bbc programming language

      DIM table&(7,15), test%(1)
      table&() =  4, 10,  9,  2, 13,  8,  0, 14,  6, 11,  1, 12,  7, 15,  5,  3, \
      \          14, 11,  4, 12,  6, 13, 15, 10,  2,  3,  8,  1,  0,  7,  5,  9, \
      \           5,  8,  1, 13, 10,  3,  4,  2, 14, 15, 12,  7,  6,  0,  9, 11, \
      \           7, 13, 10,  1,  0,  8,  9, 15, 14,  4,  6, 12, 11,  2,  5,  3, \
      \           6, 12,  7,  1,  5, 15, 13,  8,  4, 10,  9, 14,  0,  3, 11,  2, \
      \           4, 11, 10,  0,  7,  2,  1, 13,  3,  6,  8,  5,  9, 12, 15, 14, \
      \          13, 11,  4,  1,  3, 15,  5,  9,  0, 10, 14,  7,  6,  8,  2, 12, \
      \           1, 15, 13,  0,  5,  7, 10,  4,  9,  2,  3, 14,  6, 11,  8, 12
      
      test%() = &043B0421, &04320430
      key% = &E2C104F9
      PROCmainstep(test%(), key%, table&())
      PRINT ~ test%(0) test%(1)
      END
      
      DEF PROCmainstep(n%(), key%, t&())
      LOCAL i%, s%, cell&, new_s%
      s% = FN32(n%(0) + key%)
      FOR i% = 0 TO 3
        cell& = (s% >>> (i%*8)) AND &FF
        new_s% += (t&(i%*2,cell& MOD 16) + 16*t&(i%*2+1,cell& DIV 16)) << (i%*8)
      NEXT
      s% = ((new_s% << 11) OR (new_s% >>> 21)) EOR n%(1)
      n%(1) = n%(0) : n%(0) = s%
      ENDPROC
      
      DEF FN32(v)
      WHILE v>&7FFFFFFF : v-=2^32 : ENDWHILE
      WHILE v<&80000000 : v+=2^32 : ENDWHILE
      = v


  

You may also check:How to resolve the algorithm Möbius function step by step in the Wren programming language
You may also check:How to resolve the algorithm Formatted numeric output step by step in the Euphoria programming language
You may also check:How to resolve the algorithm Hello world/Graphical step by step in the Rust programming language
You may also check:How to resolve the algorithm Fractal tree step by step in the Lingo programming language
You may also check:How to resolve the algorithm Box the compass step by step in the LLVM programming language