Main step of GOST 28147-89: Difference between revisions
Content deleted Content added
added RPL |
m Formatting text due to line length exceeding page width. |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 511:
// Display the encrypted text bytes and the encrypted text
List<Character> encryptedChars =
displayBytesFromBinary("The encrypted text bytes are: ", encryptedBinary);
String encryptedText = encryptedChars.stream().map(String::valueOf).collect(Collectors.joining());
System.out.println("The encrypted text is: \"" + encryptedText + "\"" + System.lineSeparator());
Line 519 ⟶ 520:
// Display the decrypted text bytes and the decrypted text
List<Character> decryptedChars =
displayBytesFromBinary("The decrypted text bytes are: ", decryptedBinary);
byte[] bytes = new byte[decryptedChars.size()];
IntStream.range(0, decryptedChars.size())
.forEach( i -> bytes[i] = (byte) decryptedChars.get(i).charValue() );
System.out.println("The decrypted text is: \"" + new String(bytes) + "\"" + System.lineSeparator());
}
Line 740 ⟶ 743:
for (let сч = 0; сч < 4; сч++) {
const яч = (S >>> (сч << 3)) & 0xFF;
▲ + (ТЗ[сч * 2 + 1][яч >>> 4] << 4)
}
нов_S = (нов_S << 11) + (нов_S >>> 21) & 0xFFFFFFFF ^ N[1];
N[1] = N[0]; N[0] = нов_S;
return N;
Line 787 ⟶ 783:
end
bytes2int(arr) =
int2bytes(x) =
function mainstep(inputbytes, keybytes)
Line 1,307 ⟶ 1,303:
» '<span style="color:blue">KBOXINIT</span>' STO
«
'''WHILE''' #0h ≠ '''REPEAT'''
▲ » » '<span style="color:blue">F</span>' STO
«
« key REVLIST cast STREAM <span style="color:grey">@ convert key into a little-endian integer</span>
input 1 4 SUB REVLIST cast STREAM + <span style="color:blue">
{ K21 K43 K65 K87 } SWAP B→R 1 ADD GET <span style="color:grey">@ replace bytes according to the table</span>
REVLIST cast STREAM <span style="color:grey">@ back to little-endian format</span>
RLB RL RL RL <span style="color:blue">B→LIST</span> <span style="color:grey">@ roll 11 bits, back to list format</span>
input 5 8 SUB XOR <span style="color:grey">@ add part 2</span>
input 1 4 SUB + <span style="color:grey">@ append part 1</span>
▲ '''NEXT''' DROP
» » '<span style="color:blue">MAINSTEP</span>' STO
Line 1,334 ⟶ 1,327:
1: { # 1Fh # 88h # CFh # 7h # 21h # 4h # 3Bh # 4h }
</pre>
=={{header|Rust}}==
<syntaxhighlight lang="rust">use std::convert::TryInto;
|