RFC 2994 (rfc2994) - Page 2 of 10
A Description of the MISTY1 Encryption Algorithm
Alternative Format: Original Text Document
RFC 2994 MISTY1 November 2000
part takes a 64-bit input data and mixes it, namely encryption. If
data randomizing part is processed in reverse order, mixed data is
transformed to input data, namely decryption.
2.1 Terminology
Some operators are used in this document to describe the algorithm.
The operator `+' indicates two's complement addition. The operator
`*' indicates multiplication. The operator `/' yields the quotient,
and the operator `%' yields the remainder from the division. The
operator `&' indicates bitwise AND operation. The operator `|'
indicates bitwise inclusive OR operation. The operator `^' indicates
bitwise exclusive OR operation. The operator `>' indicates bitwise right
shift operation.
2.2 Key Scheduling Part
Key scheduling part consists of the following operations.
for i = 0, ..., 7 do
EK[i] = K[i*2]*256 + K[i*2+1];
for i = 0, ..., 7 do
begin
EK[i+ 8] = FI(EK[i], EK[(i+1)%8]);
EK[i+16] = EK[i+8] & 0x1ff;
EK[i+24] = EK[i+8] >> 9;
end
K is an input key, and each element of K, namely K[i], holds an 8-bit
of the key, respectively. EK denotes an expanded key, and each
element of EK, namely EK[i], holds a 16-bit of the expanded key.
Input data of K[0], ..., K[15] are copied to EK[0], ..., EK[7].
Expanded key is produced from EK[0], ..., EK[7] by using function FI,
and stored in EK[8], ..., EK[15]. Function FI is described in the
following section.
2.3 Data Randomizing Part
Data randomizing part uses two kinds of function, which are called
function FO and function FL. Function FO calls another function,
namely FI. The key expansion part also uses function FI. Function
FI uses two S-boxes, namely S7, S9. Each function is described as
follows.
Function FO takes two parameters. One is a 32-bit width input data,
namely FO_IN. The other is an index of EK, namely k. And FO returns
a 32-bit width data, namely FO_OUT.
Ohta & Matsui Informational