Talk:Main step of GOST 28147-89

From Rosetta Code

task specifics

Hi,

  • What is goal of the task?
  • How does one know one has completed the task?
  • Do you have sample tests and sample output?

- Thanks. --Paddy3118 20:22, 31 August 2012 (UTC)

Hi!
  • The goal of the task is the comparison of programming languages for the implementation of some specific cryptographic algorithm, originally designed for efficient execution on 32-bit and 64-bit machines (though created in the 70's), while it operates with a 4-bit block; comparison of low-level with high-level languages in this aspect for the sake of brevity and clarity of code execution speed, consumption of computer resources and so on.
  • The task can be considered solved if the algorithm is implemented only true converts the input data.
  • Verification example can be used as follows:
the input is a text block size of 8 bytes:
[21][04][3B][04][30][04][32][04];
and item key, size 4 bytes:
[F9][04][C1][E2].
Incoming text block is divided into two parts:
[21][04][3B][04] и [30][04][32][04].
First we add modulo 232 with the received key element, the result is
[1A][09][FC][E6].
Further, in this block is replaced with the replacement table. Are replaced by:
[A] to [1], [1] to [B], [9] to [F], [0] to [7], [C] to [0], [F] to [E], [6] to [5] and [E] to [8].
Finally, we obtain
[B1][7F][E0][85].
Next is the cyclic shift of reading towards senior level by 11 bits:
[2F][8C][FD][03].
This value is made up bit by bit modulo 2 with the second part on the input 8-bit block, the result is
[1F][88][CF][07].
Now is 8-byte block of data in the first part of which is located just obtained value, and the second - the first part was on the input 8-byte block. The resulting value
[1F][88][CF][07][21][04][3B][04]
and will be the result of the step.
Русский 18:54, 1 September 2012 (UTC)