Talk:Main step of GOST 28147-89: Difference between revisions

 
(3 intermediate revisions by 3 users not shown)
Line 34:
Is there a ''definitive'' link to the definition of the algorithm? It sounds like it's something controlled by an external body, so a definitive link (or reference to paper version, of course) ought to be possible. (If the link is to an English-language version, so much the better, but being definitive is better than being readable to me.) I ask because while I could implement the task by copying an existing solution (the C version looks easy enough to copy), I would have no idea at all whether all I'd be doing is copying their mistakes! I love to be able to independently check the correctness of any code I write. –[[User:Dkf|Donal Fellows]] 10:10, 7 September 2012 (UTC)
: Yes, of course, a reference to the text of the standard, some of which I have implemented the proposed algorithm for the job, I have: [http://gostshifr.narod.ru/gostpdf.pdf]. This is a scanned version of the paper edition of the standard. But, unfortunately, I have it is only in Russian, but in the annexes have a pretty clear flowchart. Here is a diagram of the basic step: [http://traditio-ru.org/images/d/d6/ОсновнойШаг28147.PNG]. [[User:Русский|Русский]] 13:13, 8 September 2012 (UTC)
: As you can see, I have given a description of two embodiments of the algorithm: the classical and variant with a compressed table changes. The latter has traditionally been used in implementations on low-level languages, and the first is more beautiful and obvious, therefore, in my opinion, it is better to start with him (option for "JavaScript"). [[User:Русский|Русский]] 13:17, 8 September 2012 (UTC)
:: Ah, cool! Wikipedia has some relevant links. (I didn't know it was a Feistel network…) –[[User:Dkf|Donal Fellows]] 13:16, 13 September 2012 (UTC)
I attempted to follow the verification example above. I started with the C code, made some modifications to get the intermediate results in the example, and was able to reproduce the the first 32 bit part of the result. The instructions for producing the second part are obscure though, and I was unable to reproduce the rest of the result in the example. Can these instructions be clarified? —[[User:Sonia|Sonia]] 19:09, 20 September 2012 (UTC)
 
Sonia, you are almost there. The second part of the output is actually just a copy of the other part of the input. See http://en.wikipedia.org/wiki/Feistel_cipher or my Perl 6 solution.
—[[User:Edwin|Edwin]] 13:30, 6 October 2012
57

edits