-
-
Save haimat/cd1465f09b65aab731279253340d6f1d to your computer and use it in GitHub Desktop.
Sample program for ABAP AES
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*----------------------------------------------------------------------* | |
* CLASS ZDKK_AES_UTILITY DEFINITION | |
*----------------------------------------------------------------------* | |
* | |
*----------------------------------------------------------------------* | |
CLASS zdkk_aes_utility DEFINITION | |
PUBLIC | |
FINAL | |
CREATE PUBLIC . | |
PUBLIC SECTION. | |
*"* public components of class ZCL_AES_UTILITY | |
*"* do not include other source files here!!! | |
CONSTANTS mc_block_length_in_bit TYPE int4 VALUE 128. "#EC NOTEXT | |
CONSTANTS mc_block_length_in_byte TYPE int4 VALUE 16. "#EC NOTEXT | |
CONSTANTS mc_key_length_in_bit_128 TYPE int4 VALUE 128. "#EC NOTEXT | |
CONSTANTS mc_key_length_in_bit_192 TYPE int4 VALUE 192. "#EC NOTEXT | |
CONSTANTS mc_key_length_in_bit_256 TYPE int4 VALUE 256. "#EC NOTEXT | |
CONSTANTS mc_encryption_mode_ecb TYPE char10 VALUE 'ECB'. "#EC NOTEXT | |
CONSTANTS mc_encryption_mode_cbc TYPE char10 VALUE 'CBC'. "#EC NOTEXT | |
CONSTANTS mc_encryption_mode_pcbc TYPE char10 VALUE 'PCBC'. "#EC NOTEXT | |
CONSTANTS mc_encryption_mode_cfb TYPE char10 VALUE 'CFB'. "#EC NOTEXT | |
CONSTANTS mc_encryption_mode_ofb TYPE char10 VALUE 'OFB'. "#EC NOTEXT | |
CONSTANTS mc_encryption_mode_ctr TYPE char10 VALUE 'CTR'. "#EC NOTEXT | |
CLASS-METHODS is_valid_key_xstring | |
IMPORTING | |
!i_key TYPE xstring | |
RETURNING | |
VALUE(r_valid) TYPE boole_d . | |
CLASS-METHODS is_valid_iv_xstring | |
IMPORTING | |
!i_initialization_vector TYPE xstring | |
RETURNING | |
VALUE(r_valid) TYPE boole_d . | |
CLASS-METHODS encrypt_xstring | |
IMPORTING | |
!i_key TYPE xstring | |
!i_data TYPE xstring | |
!i_initialization_vector TYPE xstring OPTIONAL | |
!i_encryption_mode TYPE char10 OPTIONAL | |
EXPORTING | |
!e_data TYPE xstring . | |
CLASS-METHODS decrypt_xstring | |
IMPORTING | |
!i_key TYPE xstring | |
!i_data TYPE xstring | |
!i_initialization_vector TYPE xstring OPTIONAL | |
!i_encryption_mode TYPE char10 OPTIONAL | |
EXPORTING | |
!e_data TYPE xstring . | |
PROTECTED SECTION. | |
*"* protected components of class ZCL_AES_UTILITY | |
*"* do not include other source files here!!! | |
CLASS-DATA mo_rijndael_128_128 TYPE REF TO zdkk_rijndael_utility . | |
CLASS-DATA mo_rijndael_128_192 TYPE REF TO zdkk_rijndael_utility . | |
CLASS-DATA mo_rijndael_128_256 TYPE REF TO zdkk_rijndael_utility . | |
CLASS-METHODS get_rijndael | |
IMPORTING | |
!i_key TYPE xstring | |
RETURNING | |
VALUE(r_rajndael) TYPE REF TO zdkk_rijndael_utility . | |
CLASS-METHODS get_blockdata_in_xstring | |
IMPORTING | |
!i_data TYPE xstring | |
!i_data_length_in_byte TYPE int4 | |
!i_block_length_in_byte TYPE int4 | |
!i_block_sequence_number TYPE int4 | |
EXPORTING | |
!e_block_data TYPE xstring . | |
CLASS-METHODS get_counter_increment | |
IMPORTING | |
!i_data TYPE xstring | |
RETURNING | |
VALUE(r_data) TYPE xstring . | |
PRIVATE SECTION. | |
*"* private components of class ZCL_AES_UTILITY | |
*"* do not include other source files here!!! | |
ENDCLASS. | |
CLASS ZDKK_AES_UTILITY IMPLEMENTATION. | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Public Method ZDKK_AES_UTILITY=>DECRYPT_XSTRING | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_KEY TYPE XSTRING | |
* | [--->] I_DATA TYPE XSTRING | |
* | [--->] I_INITIALIZATION_VECTOR TYPE XSTRING(optional) | |
* | [--->] I_ENCRYPTION_MODE TYPE CHAR10(optional) | |
* | [<---] E_DATA TYPE XSTRING | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD decrypt_xstring. | |
DATA: rijndael TYPE REF TO zdkk_rijndael_utility. | |
DATA: data_length_in_byte TYPE int4, | |
number_of_blocks TYPE int4, | |
block_sequence_cursor TYPE int4 VALUE 0. | |
DATA: working_plain_block TYPE xstring, | |
working_cipher_block TYPE xstring, | |
origin_plain_block TYPE xstring, | |
converted_plain_block TYPE xstring, | |
origin_cipher_block TYPE xstring, | |
converted_cipher_block TYPE xstring, | |
converter_block TYPE xstring. | |
IF i_encryption_mode = mc_encryption_mode_cbc | |
OR i_encryption_mode = mc_encryption_mode_pcbc | |
OR i_encryption_mode = mc_encryption_mode_cfb | |
OR i_encryption_mode = mc_encryption_mode_ofb | |
OR i_encryption_mode = mc_encryption_mode_ctr. | |
IF is_valid_iv_xstring( i_initialization_vector ) = abap_false. | |
RAISE EXCEPTION TYPE cx_me_illegal_argument | |
EXPORTING | |
name = 'I_INITIALIZATION_VECTOR' | |
value = 'Incorrect Initialization Vector length'. | |
ENDIF. | |
ELSEIF i_encryption_mode = mc_encryption_mode_ecb | |
OR i_encryption_mode IS INITIAL. | |
"Nothing, default is ECB mode | |
ELSE. | |
RAISE EXCEPTION TYPE cx_me_illegal_argument | |
EXPORTING | |
name = 'I_ENCRYPTION_MODE' | |
value = 'Incorrect Encryption Mode'. | |
ENDIF. | |
CLEAR e_data. | |
rijndael = get_rijndael( i_key = i_key ). | |
"Prepare some data | |
data_length_in_byte = xstrlen( i_data ). | |
number_of_blocks = ceil( '1.0' * data_length_in_byte * zdkk_rijndael_utility=>mc_factor_bit_byte / mc_block_length_in_bit ). | |
CASE i_encryption_mode. | |
WHEN mc_encryption_mode_cbc. | |
converter_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = working_cipher_block ). | |
rijndael->decrypt_xstring( | |
EXPORTING | |
i_data = working_cipher_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_plain_block ). | |
origin_plain_block = working_plain_block BIT-XOR converter_block. | |
e_data = e_data && origin_plain_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
converter_block = working_cipher_block. | |
ENDWHILE. | |
WHEN mc_encryption_mode_pcbc. | |
converter_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = working_cipher_block ). | |
rijndael->decrypt_xstring( | |
EXPORTING | |
i_data = working_cipher_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_plain_block ). | |
origin_plain_block = working_plain_block BIT-XOR converter_block. | |
e_data = e_data && origin_plain_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
converter_block = working_cipher_block BIT-XOR origin_plain_block. | |
ENDWHILE. | |
WHEN mc_encryption_mode_cfb. | |
working_plain_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
rijndael->encrypt_xstring( | |
EXPORTING | |
i_data = working_plain_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_cipher_block ). | |
converter_block = working_cipher_block. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = origin_cipher_block ). | |
origin_plain_block = origin_cipher_block BIT-XOR converter_block. | |
e_data = e_data && origin_plain_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
working_plain_block = origin_cipher_block. | |
ENDWHILE. | |
WHEN mc_encryption_mode_ofb. | |
working_plain_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
rijndael->encrypt_xstring( | |
EXPORTING | |
i_data = working_plain_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_cipher_block ). | |
converter_block = working_cipher_block. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = origin_cipher_block ). | |
origin_plain_block = origin_cipher_block BIT-XOR converter_block. | |
e_data = e_data && origin_plain_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
working_plain_block = working_cipher_block. | |
ENDWHILE. | |
WHEN mc_encryption_mode_ctr. | |
working_plain_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
rijndael->encrypt_xstring( | |
EXPORTING | |
i_data = working_plain_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_cipher_block ). | |
converter_block = working_cipher_block. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = origin_plain_block ). | |
converted_plain_block = origin_plain_block BIT-XOR converter_block. | |
e_data = e_data && converted_plain_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
working_plain_block = get_counter_increment( working_plain_block ). | |
ENDWHILE. | |
WHEN mc_encryption_mode_ecb OR ''. | |
WHILE block_sequence_cursor < number_of_blocks. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = working_cipher_block ). | |
rijndael->decrypt_xstring( | |
EXPORTING | |
i_data = working_cipher_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_plain_block ). | |
e_data = e_data && working_plain_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
ENDWHILE. | |
ENDCASE. | |
ENDMETHOD. "decrypt_xstring | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Public Method ZDKK_AES_UTILITY=>ENCRYPT_XSTRING | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_KEY TYPE XSTRING | |
* | [--->] I_DATA TYPE XSTRING | |
* | [--->] I_INITIALIZATION_VECTOR TYPE XSTRING(optional) | |
* | [--->] I_ENCRYPTION_MODE TYPE CHAR10(optional) | |
* | [<---] E_DATA TYPE XSTRING | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD encrypt_xstring. | |
DATA: rijndael TYPE REF TO zdkk_rijndael_utility. | |
DATA: data_length_in_byte TYPE int4, | |
number_of_blocks TYPE int4, | |
block_sequence_cursor TYPE int4 VALUE 0. | |
DATA: working_plain_block TYPE xstring, | |
working_cipher_block TYPE xstring, | |
origin_plain_block TYPE xstring, | |
converted_plain_block TYPE xstring, | |
origin_cipher_block TYPE xstring, | |
converted_cipher_block TYPE xstring, | |
converter_block TYPE xstring. | |
IF i_encryption_mode = mc_encryption_mode_cbc | |
OR i_encryption_mode = mc_encryption_mode_pcbc | |
OR i_encryption_mode = mc_encryption_mode_cfb | |
OR i_encryption_mode = mc_encryption_mode_ofb | |
OR i_encryption_mode = mc_encryption_mode_ctr. | |
IF is_valid_iv_xstring( i_initialization_vector ) = abap_false. | |
RAISE EXCEPTION TYPE cx_me_illegal_argument | |
EXPORTING | |
name = 'I_INITIALIZATION_VECTOR' | |
value = 'Incorrect Initialization Vector length'. | |
ENDIF. | |
ELSEIF i_encryption_mode = mc_encryption_mode_ecb | |
OR i_encryption_mode IS INITIAL. | |
"Nothing, default is ECB mode | |
ELSE. | |
RAISE EXCEPTION TYPE cx_me_illegal_argument | |
EXPORTING | |
name = 'I_ENCRYPTION_MODE' | |
value = 'Incorrect Encryption Mode'. | |
ENDIF. | |
CLEAR e_data. | |
rijndael = get_rijndael( i_key = i_key ). | |
"Prepare some data | |
data_length_in_byte = xstrlen( i_data ). | |
number_of_blocks = ceil( '1.0' * data_length_in_byte * zdkk_rijndael_utility=>mc_factor_bit_byte / mc_block_length_in_bit ). | |
CASE i_encryption_mode. | |
WHEN mc_encryption_mode_cbc. | |
converter_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = origin_plain_block ). | |
working_plain_block = origin_plain_block BIT-XOR converter_block. | |
rijndael->encrypt_xstring( | |
EXPORTING | |
i_data = working_plain_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_cipher_block ). | |
e_data = e_data && working_cipher_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
converter_block = working_cipher_block. | |
ENDWHILE. | |
WHEN mc_encryption_mode_pcbc. | |
converter_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = origin_plain_block ). | |
working_plain_block = origin_plain_block BIT-XOR converter_block. | |
rijndael->encrypt_xstring( | |
EXPORTING | |
i_data = working_plain_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_cipher_block ). | |
e_data = e_data && working_cipher_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
converter_block = working_cipher_block BIT-XOR working_plain_block. | |
ENDWHILE. | |
WHEN mc_encryption_mode_cfb. | |
working_plain_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = origin_plain_block ). | |
converter_block = origin_plain_block. | |
rijndael->encrypt_xstring( | |
EXPORTING | |
i_data = working_plain_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_cipher_block ). | |
converted_cipher_block = working_cipher_block BIT-XOR converter_block. | |
e_data = e_data && converted_cipher_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
working_plain_block = converted_cipher_block. | |
ENDWHILE. | |
WHEN mc_encryption_mode_ofb. | |
working_plain_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = origin_plain_block ). | |
converter_block = origin_plain_block. | |
rijndael->encrypt_xstring( | |
EXPORTING | |
i_data = working_plain_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_cipher_block ). | |
converted_cipher_block = working_cipher_block BIT-XOR converter_block. | |
e_data = e_data && converted_cipher_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
working_plain_block = working_cipher_block. | |
ENDWHILE. | |
WHEN mc_encryption_mode_ctr. | |
working_plain_block = i_initialization_vector. | |
WHILE block_sequence_cursor < number_of_blocks. | |
rijndael->encrypt_xstring( | |
EXPORTING | |
i_data = working_plain_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_cipher_block ). | |
converter_block = working_cipher_block. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = origin_plain_block ). | |
converted_plain_block = origin_plain_block BIT-XOR converter_block. | |
e_data = e_data && converted_plain_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
working_plain_block = get_counter_increment( working_plain_block ). | |
ENDWHILE. | |
WHEN mc_encryption_mode_ecb OR ''. | |
WHILE block_sequence_cursor < number_of_blocks. | |
get_blockdata_in_xstring( | |
EXPORTING | |
i_data = i_data | |
i_data_length_in_byte = data_length_in_byte | |
i_block_length_in_byte = mc_block_length_in_byte | |
i_block_sequence_number = block_sequence_cursor | |
IMPORTING | |
e_block_data = working_plain_block ). | |
rijndael->encrypt_xstring( | |
EXPORTING | |
i_data = working_plain_block | |
i_key = i_key | |
IMPORTING | |
e_data = working_cipher_block ). | |
e_data = e_data && working_cipher_block. | |
block_sequence_cursor = block_sequence_cursor + 1. | |
ENDWHILE. | |
ENDCASE. | |
ENDMETHOD. "encrypt_xstring | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_AES_UTILITY=>GET_BLOCKDATA_IN_XSTRING | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_DATA TYPE XSTRING | |
* | [--->] I_DATA_LENGTH_IN_BYTE TYPE INT4 | |
* | [--->] I_BLOCK_LENGTH_IN_BYTE TYPE INT4 | |
* | [--->] I_BLOCK_SEQUENCE_NUMBER TYPE INT4 | |
* | [<---] E_BLOCK_DATA TYPE XSTRING | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD get_blockdata_in_xstring. | |
DATA: offset_in_byte TYPE int4, | |
target_block_length_in_byte TYPE int4. | |
offset_in_byte = i_block_sequence_number * i_block_length_in_byte. | |
target_block_length_in_byte = i_data_length_in_byte - offset_in_byte. | |
IF target_block_length_in_byte >= i_block_length_in_byte. | |
target_block_length_in_byte = i_block_length_in_byte. | |
ENDIF. | |
e_block_data = i_data+offset_in_byte(target_block_length_in_byte). | |
WHILE target_block_length_in_byte < i_block_length_in_byte. | |
e_block_data = e_block_data && '00'. | |
target_block_length_in_byte = target_block_length_in_byte + 1. | |
ENDWHILE. | |
ENDMETHOD. "get_blockdata_in_xstring | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_AES_UTILITY=>GET_COUNTER_INCREMENT | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_DATA TYPE XSTRING | |
* | [<-()] R_DATA TYPE XSTRING | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD get_counter_increment. | |
DATA: offset TYPE int4, | |
length TYPE int4, | |
cursor TYPE x LENGTH 1, | |
one TYPE x LENGTH 1 VALUE '01'.. | |
length = xstrlen( i_data ). | |
offset = length - 1. | |
WHILE offset >= 0. | |
cursor = i_data+offset(1). | |
cursor = cursor + one. | |
r_data = cursor && r_data. | |
IF cursor <> '00'. | |
EXIT. | |
ENDIF. | |
offset = offset - 1. | |
ENDWHILE. | |
IF offset >= 0. | |
r_data = i_data+0(offset) && r_data. | |
ENDIF. | |
ENDMETHOD. "get_counter_increment | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_AES_UTILITY=>GET_RIJNDAEL | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_KEY TYPE XSTRING | |
* | [<-()] R_RAJNDAEL TYPE REF TO ZDKK_RIJNDAEL_UTILITY | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD get_rijndael. | |
DATA: key_length_in_bit TYPE int4. | |
key_length_in_bit = xstrlen( i_key ) * zdkk_rijndael_utility=>mc_factor_bit_byte. | |
IF key_length_in_bit = mc_key_length_in_bit_128. | |
IF mo_rijndael_128_128 IS NOT BOUND. | |
CREATE OBJECT mo_rijndael_128_128 | |
EXPORTING | |
i_key_length_in_bit = mc_key_length_in_bit_128 | |
i_block_length_in_bit = mc_block_length_in_bit. | |
ENDIF. | |
r_rajndael = mo_rijndael_128_128. | |
ELSEIF key_length_in_bit = mc_key_length_in_bit_192. | |
IF mo_rijndael_128_192 IS NOT BOUND. | |
CREATE OBJECT mo_rijndael_128_192 | |
EXPORTING | |
i_key_length_in_bit = mc_key_length_in_bit_192 | |
i_block_length_in_bit = mc_block_length_in_bit. | |
ENDIF. | |
r_rajndael = mo_rijndael_128_192. | |
ELSEIF key_length_in_bit = mc_key_length_in_bit_256. | |
IF mo_rijndael_128_256 IS NOT BOUND. | |
CREATE OBJECT mo_rijndael_128_256 | |
EXPORTING | |
i_key_length_in_bit = mc_key_length_in_bit_256 | |
i_block_length_in_bit = mc_block_length_in_bit. | |
ENDIF. | |
r_rajndael = mo_rijndael_128_256. | |
ELSE. | |
RAISE EXCEPTION TYPE cx_me_illegal_argument | |
EXPORTING | |
name = 'I_KEY' | |
value = 'Incorrect key length'. | |
ENDIF. | |
ENDMETHOD. "get_rijndael | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Public Method ZDKK_AES_UTILITY=>IS_VALID_IV_XSTRING | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_INITIALIZATION_VECTOR TYPE XSTRING | |
* | [<-()] R_VALID TYPE BOOLE_D | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD is_valid_iv_xstring. | |
DATA: iv_length_in_bit TYPE int4. | |
iv_length_in_bit = xstrlen( i_initialization_vector ) * zdkk_rijndael_utility=>mc_factor_bit_byte. | |
IF iv_length_in_bit = mc_block_length_in_bit. | |
r_valid = abap_true. | |
ENDIF. | |
ENDMETHOD. "is_valid_iv_xstring | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Public Method ZDKK_AES_UTILITY=>IS_VALID_KEY_XSTRING | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_KEY TYPE XSTRING | |
* | [<-()] R_VALID TYPE BOOLE_D | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD is_valid_key_xstring. | |
DATA: key_length_in_bit TYPE int4. | |
key_length_in_bit = xstrlen( i_key ) * zdkk_rijndael_utility=>mc_factor_bit_byte. | |
IF key_length_in_bit = mc_key_length_in_bit_128 | |
OR key_length_in_bit = mc_key_length_in_bit_192 | |
OR key_length_in_bit = mc_key_length_in_bit_256. | |
r_valid = abap_true. | |
ENDIF. | |
ENDMETHOD. "is_valid_key_xstring | |
ENDCLASS. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CLASS zdkk_rijndael_utility DEFINITION | |
PUBLIC | |
CREATE PUBLIC . | |
PUBLIC SECTION. | |
*"* public components of class ZCL_RIJNDAEL_UTILITY | |
*"* do not include other source files here!!! | |
CONSTANTS mc_factor_bit_byte TYPE int4 VALUE 8. "#EC NOTEXT | |
CONSTANTS mc_factor_bit_word TYPE int4 VALUE 32. "#EC NOTEXT | |
CONSTANTS mc_factor_byte_word TYPE int4 VALUE 4. "#EC NOTEXT | |
CONSTANTS mc_length_in_bit_128 TYPE int4 VALUE 128. "#EC NOTEXT | |
CONSTANTS mc_length_in_bit_160 TYPE int4 VALUE 160. "#EC NOTEXT | |
CONSTANTS mc_length_in_bit_192 TYPE int4 VALUE 192. "#EC NOTEXT | |
CONSTANTS mc_length_in_bit_224 TYPE int4 VALUE 224. "#EC NOTEXT | |
CONSTANTS mc_length_in_bit_256 TYPE int4 VALUE 256. "#EC NOTEXT | |
CONSTANTS mc_length_in_byte_16 TYPE int4 VALUE 16. "#EC NOTEXT | |
CONSTANTS mc_length_in_byte_20 TYPE int4 VALUE 20. "#EC NOTEXT | |
CONSTANTS mc_length_in_byte_24 TYPE int4 VALUE 24. "#EC NOTEXT | |
CONSTANTS mc_length_in_byte_28 TYPE int4 VALUE 28. "#EC NOTEXT | |
CONSTANTS mc_length_in_byte_32 TYPE int4 VALUE 32. "#EC NOTEXT | |
CONSTANTS mc_length_in_word_4 TYPE int4 VALUE 4. "#EC NOTEXT | |
CONSTANTS mc_length_in_word_5 TYPE int4 VALUE 5. "#EC NOTEXT | |
CONSTANTS mc_length_in_word_6 TYPE int4 VALUE 6. "#EC NOTEXT | |
CONSTANTS mc_length_in_word_7 TYPE int4 VALUE 7. "#EC NOTEXT | |
CONSTANTS mc_length_in_word_8 TYPE int4 VALUE 8. "#EC NOTEXT | |
CLASS-METHODS class_constructor . | |
METHODS constructor | |
IMPORTING | |
!i_key_length_in_bit TYPE int4 | |
!i_block_length_in_bit TYPE int4 . | |
METHODS decrypt_xstring | |
IMPORTING | |
!i_key TYPE xstring | |
!i_data TYPE xstring | |
EXPORTING | |
!e_data TYPE xstring . | |
METHODS encrypt_xstring | |
IMPORTING | |
!i_key TYPE xstring | |
!i_data TYPE xstring | |
EXPORTING | |
!e_data TYPE xstring . | |
METHODS is_valid_key_xstring | |
IMPORTING | |
!i_key TYPE xstring | |
RETURNING | |
VALUE(r_valid) TYPE boole_d . | |
PROTECTED SECTION. | |
*"* protected components of class ZCL_RIJNDAEL_UTILITY | |
*"* do not include other source files here!!! | |
CLASS-DATA: | |
mt_multiplication_lookup_11 TYPE TABLE OF x . | |
CLASS-DATA: | |
mt_multiplication_lookup_13 TYPE TABLE OF x . | |
CLASS-DATA: | |
mt_multiplication_lookup_14 TYPE TABLE OF x . | |
CLASS-DATA: | |
mt_multiplication_lookup_2 TYPE TABLE OF x . | |
CLASS-DATA: | |
mt_multiplication_lookup_3 TYPE TABLE OF x . | |
CLASS-DATA: | |
mt_multiplication_lookup_9 TYPE TABLE OF x . | |
CLASS-DATA: | |
mt_rcon TYPE TABLE OF x . | |
CLASS-DATA: | |
mt_row_shift_4 TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_row_shift_4_inv TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_row_shift_5 TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_row_shift_5_inv TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_row_shift_6 TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_row_shift_6_inv TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_row_shift_7 TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_row_shift_7_inv TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_row_shift_8 TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_row_shift_8_inv TYPE TABLE OF int4 . | |
CLASS-DATA: | |
mt_sbox TYPE TABLE OF x . | |
CLASS-DATA: | |
mt_sbox_inv TYPE TABLE OF x . | |
CLASS-DATA: | |
mt_x TYPE TABLE OF x . | |
DATA m_block_length_in_bit TYPE int4 . | |
DATA m_block_length_in_byte TYPE int4 . | |
DATA m_block_length_in_word TYPE int4 . | |
DATA m_key_length_in_bit TYPE int4 . | |
DATA m_key_length_in_byte TYPE int4 . | |
DATA m_key_length_in_word TYPE int4 . | |
DATA m_round TYPE int4 . | |
DATA m_row_shift_c1 TYPE int4 . | |
DATA m_row_shift_c2 TYPE int4 . | |
DATA m_row_shift_c3 TYPE int4 . | |
CLASS-METHODS _get_multiplication_11 | |
IMPORTING | |
!i_x TYPE x | |
RETURNING | |
VALUE(r_x) TYPE hextyp . | |
CLASS-METHODS _get_multiplication_13 | |
IMPORTING | |
!i_x TYPE x | |
RETURNING | |
VALUE(r_x) TYPE hextyp . | |
CLASS-METHODS _get_multiplication_14 | |
IMPORTING | |
!i_x TYPE x | |
RETURNING | |
VALUE(r_x) TYPE hextyp . | |
CLASS-METHODS _get_multiplication_2 | |
IMPORTING | |
!i_x TYPE x | |
RETURNING | |
VALUE(r_x) TYPE hextyp . | |
CLASS-METHODS _get_multiplication_3 | |
IMPORTING | |
!i_x TYPE x | |
RETURNING | |
VALUE(r_x) TYPE hextyp . | |
CLASS-METHODS _get_multiplication_9 | |
IMPORTING | |
!i_x TYPE x | |
RETURNING | |
VALUE(r_x) TYPE hextyp . | |
CLASS-METHODS _rcon | |
IMPORTING | |
!i_number TYPE int4 | |
EXPORTING | |
!e_array LIKE mt_x . | |
CLASS-METHODS _sbox | |
CHANGING | |
VALUE(c_x) TYPE x . | |
CLASS-METHODS _sbox_inv | |
CHANGING | |
!c_x TYPE x . | |
METHODS array_copy | |
IMPORTING | |
!i_source LIKE mt_x | |
!i_start_index TYPE int4 | |
!i_end_index TYPE int4 | |
!i_dest_start_index TYPE int4 DEFAULT 1 | |
CHANGING | |
!c_destination LIKE mt_x . | |
METHODS array_mix_columns | |
CHANGING | |
!c_array LIKE mt_x . | |
METHODS array_mix_columns_inv | |
CHANGING | |
!c_array LIKE mt_x . | |
METHODS array_sbox | |
IMPORTING | |
!i_start_index TYPE int4 OPTIONAL | |
!i_end_index TYPE int4 OPTIONAL | |
CHANGING | |
!c_data LIKE mt_x . | |
METHODS array_sbox_inv | |
IMPORTING | |
!i_start_index TYPE int4 OPTIONAL | |
!i_end_index TYPE int4 OPTIONAL | |
CHANGING | |
!c_data LIKE mt_x . | |
METHODS array_shift_rows | |
CHANGING | |
!c_array LIKE mt_x . | |
METHODS array_shift_rows_inv | |
CHANGING | |
!c_array LIKE mt_x . | |
METHODS array_xor | |
IMPORTING | |
!i_array LIKE mt_x | |
!i_i_array_start_index TYPE int4 | |
!i_c_array_start_index TYPE int4 | |
!i_length_by_byte TYPE int4 | |
CHANGING | |
!c_array LIKE mt_x . | |
METHODS calculate_round_key_array | |
IMPORTING | |
!i_key TYPE xstring | |
EXPORTING | |
!e_round_key_array LIKE mt_x . | |
METHODS convert_array_to_xstring | |
IMPORTING | |
!i_array LIKE mt_x | |
!i_start_index TYPE int4 OPTIONAL | |
!i_end_index TYPE int4 OPTIONAL | |
EXPORTING | |
!e_xstring TYPE xstring . | |
METHODS convert_xstring_to_array | |
IMPORTING | |
!i_xstring TYPE xstring | |
!i_length_in_byte TYPE int4 OPTIONAL | |
EXPORTING | |
!e_array LIKE mt_x . | |
PRIVATE SECTION. | |
*"* private components of class ZCL_RIJNDAEL_UTILITY | |
*"* do not include other source files here!!! | |
TYPES: | |
BEGIN OF x_matrix_element, | |
row TYPE int2, | |
col TYPE int2, | |
val TYPE x LENGTH 1, | |
END OF x_matrix_element . | |
TYPES: | |
BEGIN OF type_vector_4, | |
_0 TYPE x LENGTH 1, | |
_1 TYPE x LENGTH 1, | |
_2 TYPE x LENGTH 1, | |
_3 TYPE x LENGTH 1, | |
END OF type_vector_4 . | |
CLASS-METHODS _build_multiplication . | |
CLASS-METHODS _build_rcon . | |
CLASS-METHODS _build_row_shift . | |
CLASS-METHODS _build_row_shift_inv . | |
CLASS-METHODS _build_sbox . | |
CLASS-METHODS _build_sbox_inv . | |
ENDCLASS. | |
CLASS ZDKK_RIJNDAEL_UTILITY IMPLEMENTATION. | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->ARRAY_COPY | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_SOURCE LIKE MT_X | |
* | [--->] I_START_INDEX TYPE INT4 | |
* | [--->] I_END_INDEX TYPE INT4 | |
* | [--->] I_DEST_START_INDEX TYPE INT4 (default =1) | |
* | [<-->] C_DESTINATION LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD array_copy. | |
DATA: dest_cursor TYPE int4. | |
FIELD-SYMBOLS: <fs_x> TYPE x. | |
dest_cursor = i_dest_start_index. | |
LOOP AT i_source FROM i_start_index TO i_end_index ASSIGNING <fs_x>. | |
INSERT <fs_x> INTO c_destination INDEX dest_cursor. | |
dest_cursor = dest_cursor + 1. | |
ENDLOOP. | |
ENDMETHOD. "array_copy | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->ARRAY_MIX_COLUMNS | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [<-->] C_ARRAY LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD array_mix_columns. | |
DATA: array_length_in_word TYPE int4, | |
cursor TYPE int4, | |
word_offset TYPE int4, | |
temp_array TYPE TABLE OF x, | |
temp_x_1 TYPE x, | |
temp_x_2 TYPE x, | |
temp_x_3 TYPE x, | |
temp_x_4 TYPE x, | |
new_x TYPE x. | |
array_length_in_word = lines( c_array ) / mc_factor_byte_word. | |
cursor = 0. | |
WHILE cursor < array_length_in_word. | |
word_offset = cursor * mc_factor_byte_word. | |
READ TABLE c_array INDEX word_offset + 1 INTO temp_x_1. | |
READ TABLE c_array INDEX word_offset + 2 INTO temp_x_2. | |
READ TABLE c_array INDEX word_offset + 3 INTO temp_x_3. | |
READ TABLE c_array INDEX word_offset + 4 INTO temp_x_4. | |
new_x = _get_multiplication_2( temp_x_1 ) BIT-XOR _get_multiplication_3( temp_x_2 ) BIT-XOR temp_x_3 BIT-XOR temp_x_4. | |
APPEND new_x TO temp_array. | |
new_x = temp_x_1 BIT-XOR _get_multiplication_2( temp_x_2 ) BIT-XOR _get_multiplication_3( temp_x_3 ) BIT-XOR temp_x_4. | |
APPEND new_x TO temp_array. | |
new_x = temp_x_1 BIT-XOR temp_x_2 BIT-XOR _get_multiplication_2( temp_x_3 ) BIT-XOR _get_multiplication_3( temp_x_4 ). | |
APPEND new_x TO temp_array. | |
new_x = _get_multiplication_3( temp_x_1 ) BIT-XOR temp_x_2 BIT-XOR temp_x_3 BIT-XOR _get_multiplication_2( temp_x_4 ). | |
APPEND new_x TO temp_array. | |
cursor = cursor + 1. | |
ENDWHILE. | |
c_array[] = temp_array[]. | |
ENDMETHOD. "array_mix_columns | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->ARRAY_MIX_COLUMNS_INV | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [<-->] C_ARRAY LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD array_mix_columns_inv. | |
DATA: array_length_in_word TYPE int4, | |
cursor TYPE int4, | |
word_offset TYPE int4, | |
temp_array TYPE TABLE OF x, | |
temp_x_1 TYPE x, | |
temp_x_2 TYPE x, | |
temp_x_3 TYPE x, | |
temp_x_4 TYPE x, | |
new_x TYPE x. | |
array_length_in_word = lines( c_array ) / mc_factor_byte_word. | |
cursor = 0. | |
WHILE cursor < array_length_in_word. | |
word_offset = cursor * mc_factor_byte_word. | |
READ TABLE c_array INDEX word_offset + 1 INTO temp_x_1. | |
READ TABLE c_array INDEX word_offset + 2 INTO temp_x_2. | |
READ TABLE c_array INDEX word_offset + 3 INTO temp_x_3. | |
READ TABLE c_array INDEX word_offset + 4 INTO temp_x_4. | |
new_x = _get_multiplication_14( temp_x_1 ) BIT-XOR _get_multiplication_11( temp_x_2 ) BIT-XOR _get_multiplication_13( temp_x_3 ) BIT-XOR _get_multiplication_9( temp_x_4 ). | |
APPEND new_x TO temp_array. | |
new_x = _get_multiplication_9( temp_x_1 ) BIT-XOR _get_multiplication_14( temp_x_2 ) BIT-XOR _get_multiplication_11( temp_x_3 ) BIT-XOR _get_multiplication_13( temp_x_4 ). | |
APPEND new_x TO temp_array. | |
new_x = _get_multiplication_13( temp_x_1 ) BIT-XOR _get_multiplication_9( temp_x_2 ) BIT-XOR _get_multiplication_14( temp_x_3 ) BIT-XOR _get_multiplication_11( temp_x_4 ). | |
APPEND new_x TO temp_array. | |
new_x = _get_multiplication_11( temp_x_1 ) BIT-XOR _get_multiplication_13( temp_x_2 ) BIT-XOR _get_multiplication_9( temp_x_3 ) BIT-XOR _get_multiplication_14( temp_x_4 ). | |
APPEND new_x TO temp_array. | |
cursor = cursor + 1. | |
ENDWHILE. | |
c_array[] = temp_array[]. | |
ENDMETHOD. "array_mix_columns_inv | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->ARRAY_SBOX | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_START_INDEX TYPE INT4(optional) | |
* | [--->] I_END_INDEX TYPE INT4(optional) | |
* | [<-->] C_DATA LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD array_sbox. | |
DATA: start_index TYPE int4, | |
end_index TYPE int4, | |
length_in_byte TYPE int4. | |
FIELD-SYMBOLS: <fs_x> TYPE x. | |
start_index = i_start_index. | |
end_index = i_end_index. | |
length_in_byte = lines( c_data ). | |
IF start_index IS INITIAL OR start_index < 0. | |
start_index = 1. | |
ENDIF. | |
IF end_index IS INITIAL OR end_index > length_in_byte. | |
end_index = length_in_byte. | |
ENDIF. | |
IF start_index <= end_index. | |
LOOP AT c_data ASSIGNING <fs_x> FROM start_index TO end_index. | |
_sbox( | |
CHANGING | |
c_x = <fs_x> | |
). | |
ENDLOOP. | |
ENDIF. | |
ENDMETHOD. "ARRAY_SBOX | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->ARRAY_SBOX_INV | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_START_INDEX TYPE INT4(optional) | |
* | [--->] I_END_INDEX TYPE INT4(optional) | |
* | [<-->] C_DATA LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD array_sbox_inv. | |
DATA: start_index TYPE int4, | |
end_index TYPE int4, | |
length_in_byte TYPE int4. | |
FIELD-SYMBOLS: <fs_x> TYPE x. | |
start_index = i_start_index. | |
end_index = i_end_index. | |
length_in_byte = lines( c_data ). | |
IF start_index IS INITIAL OR start_index < 0. | |
start_index = 1. | |
ENDIF. | |
IF end_index IS INITIAL OR end_index > length_in_byte. | |
end_index = length_in_byte. | |
ENDIF. | |
IF start_index <= end_index. | |
LOOP AT c_data ASSIGNING <fs_x> FROM start_index TO end_index. | |
_sbox_inv( | |
CHANGING | |
c_x = <fs_x> | |
). | |
ENDLOOP. | |
ENDIF. | |
ENDMETHOD. "ARRAY_SOBX_INV | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->ARRAY_SHIFT_ROWS | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [<-->] C_ARRAY LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD array_shift_rows. | |
DATA: array_length_in_byte TYPE int4, | |
number_of_blocks TYPE int4, | |
block_cursor TYPE int4, | |
block_offset TYPE int4, | |
temp_array TYPE TABLE OF x, | |
shift_row_lookup_table TYPE TABLE OF int4, | |
cursor TYPE int4, | |
index_from TYPE int4. | |
FIELD-SYMBOLS: <fs_x> TYPE x. | |
"c_array strucutre (by table index, each element is a byte) | |
"<---- Block --- > <---- Block --- > <---- Block --- > | |
"01 05 09 13 17 21 25 29 33 37 41 45 49 ... | |
"02 06 10 14 18 22 26 30 34 38 42 46 50 ... | |
"03 07 11 15 19 23 27 31 35 39 43 47 51 ... | |
"04 08 12 16 20 24 28 32 36 40 44 48 52 ... | |
"After shift, each row inside one block moves left c0, c1, c2, c3 elements, c0 is always 0 | |
"Take c1 = 1, c2 = 2, c3 = 3 for example, for block width 6 (in word) | |
"<---- Block --- > <---- Block --- > <---- Block --- > | |
"01 05 09 13 17 21 25 29 33 37 41 45 49 ... | |
"06 10 14 18 22 02 30 34 38 42 46 26 54 ... | |
"11 15 19 23 03 07 35 39 43 47 27 31 59 ... | |
"16 20 24 04 08 12 40 44 48 28 32 36 64 ... | |
CASE m_block_length_in_word. | |
WHEN 4. | |
shift_row_lookup_table = mt_row_shift_4. | |
WHEN 5. | |
shift_row_lookup_table = mt_row_shift_5. | |
WHEN 6. | |
shift_row_lookup_table = mt_row_shift_6. | |
WHEN 7. | |
shift_row_lookup_table = mt_row_shift_7. | |
WHEN 8. | |
shift_row_lookup_table = mt_row_shift_8. | |
ENDCASE. | |
array_length_in_byte = lines( c_array ). | |
number_of_blocks = array_length_in_byte / mc_factor_byte_word / m_block_length_in_word. | |
block_cursor = 0. | |
WHILE block_cursor < number_of_blocks. | |
block_offset = block_cursor * m_block_length_in_byte. | |
CLEAR temp_array. | |
cursor = 1. | |
WHILE cursor <= m_block_length_in_byte. | |
READ TABLE shift_row_lookup_table INDEX cursor INTO index_from. | |
index_from = index_from + block_offset. | |
READ TABLE c_array INDEX index_from ASSIGNING <fs_x>. | |
APPEND <fs_x> TO temp_array. | |
cursor = cursor + 1. | |
ENDWHILE. | |
LOOP AT c_array FROM block_offset + 1 TO block_offset + m_block_length_in_byte ASSIGNING <fs_x>. | |
READ TABLE temp_array INDEX sy-tabix - block_offset INTO <fs_x>. | |
ENDLOOP. | |
block_cursor = block_cursor + 1. | |
ENDWHILE. | |
ENDMETHOD. "array_shift_rows | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->ARRAY_SHIFT_ROWS_INV | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [<-->] C_ARRAY LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD array_shift_rows_inv. | |
DATA: array_length_in_byte TYPE int4, | |
number_of_blocks TYPE int4, | |
block_cursor TYPE int4, | |
block_offset TYPE int4, | |
temp_array TYPE TABLE OF x, | |
shift_row_lookup_table TYPE TABLE OF int4, | |
cursor TYPE int4, | |
index_from TYPE int4. | |
FIELD-SYMBOLS: <fs_x> TYPE x. | |
CASE m_block_length_in_word. | |
WHEN 4. | |
shift_row_lookup_table = mt_row_shift_4_inv. | |
WHEN 5. | |
shift_row_lookup_table = mt_row_shift_5_inv. | |
WHEN 6. | |
shift_row_lookup_table = mt_row_shift_6_inv. | |
WHEN 7. | |
shift_row_lookup_table = mt_row_shift_7_inv. | |
WHEN 8. | |
shift_row_lookup_table = mt_row_shift_8_inv. | |
ENDCASE. | |
array_length_in_byte = lines( c_array ). | |
number_of_blocks = array_length_in_byte / mc_factor_byte_word / m_block_length_in_word. | |
block_cursor = 0. | |
WHILE block_cursor < number_of_blocks. | |
block_offset = block_cursor * m_block_length_in_byte. | |
CLEAR temp_array. | |
cursor = 1. | |
WHILE cursor <= m_block_length_in_byte. | |
READ TABLE shift_row_lookup_table INDEX cursor INTO index_from. | |
index_from = index_from + block_offset. | |
READ TABLE c_array INDEX index_from ASSIGNING <fs_x>. | |
APPEND <fs_x> TO temp_array. | |
cursor = cursor + 1. | |
ENDWHILE. | |
LOOP AT c_array FROM block_offset + 1 TO block_offset + m_block_length_in_byte ASSIGNING <fs_x>. | |
READ TABLE temp_array INDEX sy-tabix - block_offset INTO <fs_x>. | |
ENDLOOP. | |
block_cursor = block_cursor + 1. | |
ENDWHILE. | |
ENDMETHOD. "array_shift_rows_inv | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->ARRAY_XOR | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_ARRAY LIKE MT_X | |
* | [--->] I_I_ARRAY_START_INDEX TYPE INT4 | |
* | [--->] I_C_ARRAY_START_INDEX TYPE INT4 | |
* | [--->] I_LENGTH_BY_BYTE TYPE INT4 | |
* | [<-->] C_ARRAY LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD array_xor. | |
DATA: i_array_cursor TYPE int4. | |
FIELD-SYMBOLS: <fs_i_array> TYPE x, | |
<fs_c_array> TYPE x. | |
i_array_cursor = i_i_array_start_index. | |
LOOP AT c_array FROM i_c_array_start_index TO i_c_array_start_index + i_length_by_byte - 1 ASSIGNING <fs_c_array>. | |
READ TABLE i_array ASSIGNING <fs_i_array> INDEX i_array_cursor. | |
<fs_c_array> = <fs_c_array> BIT-XOR <fs_i_array>. | |
i_array_cursor = i_array_cursor + 1. | |
ENDLOOP. | |
ENDMETHOD. "array_xor | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->CALCULATE_ROUND_KEY_ARRAY | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_KEY TYPE XSTRING | |
* | [<---] E_ROUND_KEY_ARRAY LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD calculate_round_key_array. | |
DATA: cursor TYPE int4, | |
temp_word TYPE TABLE OF x, | |
rcon TYPE TABLE OF x. | |
FIELD-SYMBOLS: <fs_x> TYPE x. | |
CLEAR e_round_key_array. | |
convert_xstring_to_array( | |
EXPORTING | |
i_xstring = i_key | |
IMPORTING | |
e_array = e_round_key_array ). | |
cursor = m_key_length_in_word. | |
WHILE cursor < m_key_length_in_word * ( m_round + 1 ). | |
CLEAR temp_word. | |
array_copy( | |
EXPORTING | |
i_source = e_round_key_array | |
i_start_index = ( cursor - 1 ) * mc_factor_byte_word + 1 | |
i_end_index = ( cursor - 1 ) * mc_factor_byte_word + 4 | |
i_dest_start_index = 1 | |
CHANGING | |
c_destination = temp_word ). | |
IF cursor MOD m_key_length_in_word = 0. | |
READ TABLE temp_word INDEX 1 ASSIGNING <fs_x>. | |
APPEND <fs_x> TO temp_word. | |
DELETE temp_word INDEX 1. | |
array_sbox( | |
CHANGING | |
c_data = temp_word ). | |
_rcon( | |
EXPORTING | |
i_number = cursor / m_key_length_in_word | |
IMPORTING | |
e_array = rcon ). | |
array_xor( | |
EXPORTING | |
i_array = rcon | |
i_i_array_start_index = 1 | |
i_c_array_start_index = 1 | |
i_length_by_byte = 4 | |
CHANGING | |
c_array = temp_word ). | |
ELSEIF m_key_length_in_word > 6 AND cursor MOD m_key_length_in_word = 4. | |
array_sbox( | |
CHANGING | |
c_data = temp_word ). | |
ENDIF. | |
array_copy( | |
EXPORTING | |
i_source = e_round_key_array | |
i_start_index = ( cursor - m_key_length_in_word ) * mc_factor_byte_word + 1 | |
i_end_index = ( cursor - m_key_length_in_word ) * mc_factor_byte_word + 4 | |
i_dest_start_index = cursor * mc_factor_byte_word + 1 | |
CHANGING | |
c_destination = e_round_key_array ). | |
array_xor( | |
EXPORTING | |
i_array = temp_word | |
i_i_array_start_index = 1 | |
i_length_by_byte = 4 | |
i_c_array_start_index = cursor * mc_factor_byte_word + 1 | |
CHANGING | |
c_array = e_round_key_array ). | |
cursor = cursor + 1. | |
ENDWHILE. | |
ENDMETHOD. "calculate_round_key_array | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Public Method ZDKK_RIJNDAEL_UTILITY=>CLASS_CONSTRUCTOR | |
* +-------------------------------------------------------------------------------------------------+ | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD class_constructor. | |
"Build lookup for Subbyte conversion | |
_build_sbox( ). | |
_build_sbox_inv( ). | |
"Build lookup for Rcon | |
_build_rcon( ). | |
"Build lookup for Row shift | |
_build_row_shift( ). | |
_build_row_shift_inv( ). | |
"Build coefficient * Byte lookupused for Column Mix | |
_build_multiplication( ). | |
ENDMETHOD. "class_constructor | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Public Method ZDKK_RIJNDAEL_UTILITY->CONSTRUCTOR | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_KEY_LENGTH_IN_BIT TYPE INT4 | |
* | [--->] I_BLOCK_LENGTH_IN_BIT TYPE INT4 | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD constructor. | |
IF i_key_length_in_bit <> mc_length_in_bit_128 | |
AND i_key_length_in_bit <> mc_length_in_bit_160 | |
AND i_key_length_in_bit <> mc_length_in_bit_192 | |
AND i_key_length_in_bit <> mc_length_in_bit_224 | |
AND i_key_length_in_bit <> mc_length_in_bit_256. | |
"Don't know what good exception class to use ... | |
RAISE EXCEPTION TYPE cx_me_illegal_argument | |
EXPORTING | |
name = 'I_KEY_LENGTH_IN_BIT' | |
value = 'Incorrect key length'. | |
ENDIF. | |
IF i_block_length_in_bit <> mc_length_in_bit_128 | |
AND i_block_length_in_bit <> mc_length_in_bit_160 | |
AND i_block_length_in_bit <> mc_length_in_bit_192 | |
AND i_block_length_in_bit <> mc_length_in_bit_224 | |
AND i_block_length_in_bit <> mc_length_in_bit_256. | |
"Don't know what good exception class to use ... | |
RAISE EXCEPTION TYPE cx_me_illegal_argument | |
EXPORTING | |
name = 'I_BLOCK_LENGTH_IN_BIT' | |
value = 'Incorrect key length'. | |
ENDIF. | |
m_key_length_in_bit = i_key_length_in_bit. | |
m_key_length_in_byte = m_key_length_in_bit / mc_factor_bit_byte. | |
m_key_length_in_word = m_key_length_in_byte / mc_factor_byte_word. | |
m_block_length_in_bit = i_block_length_in_bit. | |
m_block_length_in_byte = m_block_length_in_bit / mc_factor_bit_byte. | |
m_block_length_in_word = m_block_length_in_byte / mc_factor_byte_word. | |
IF m_key_length_in_word > m_block_length_in_word. | |
m_round = m_key_length_in_word + 6. | |
ELSE. | |
m_round = m_block_length_in_word + 6. | |
ENDIF. | |
"Actually not needed any more, just leave here for documentation purpose ... | |
IF m_key_length_in_word <= mc_length_in_word_6. | |
m_row_shift_c1 = 1. | |
m_row_shift_c2 = 2. | |
m_row_shift_c3 = 3. | |
ELSEIF m_key_length_in_word = 7. | |
m_row_shift_c1 = 1. | |
m_row_shift_c2 = 2. | |
m_row_shift_c3 = 4. | |
ELSEIF m_key_length_in_word = 8. | |
m_row_shift_c1 = 1. | |
m_row_shift_c2 = 3. | |
m_row_shift_c3 = 4. | |
ENDIF. | |
ENDMETHOD. "constructor | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->CONVERT_ARRAY_TO_XSTRING | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_ARRAY LIKE MT_X | |
* | [--->] I_START_INDEX TYPE INT4(optional) | |
* | [--->] I_END_INDEX TYPE INT4(optional) | |
* | [<---] E_XSTRING TYPE XSTRING | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD convert_array_to_xstring. | |
DATA: start_index TYPE int4, | |
end_index TYPE int4. | |
FIELD-SYMBOLS: <fs_x> TYPE x. | |
CLEAR e_xstring. | |
start_index = i_start_index. | |
end_index = i_end_index. | |
IF start_index IS INITIAL OR start_index <= 0. | |
start_index = 1. | |
ENDIF. | |
IF end_index IS INITIAL. | |
end_index = lines( i_array ). | |
ENDIF. | |
LOOP AT i_array FROM start_index TO end_index ASSIGNING <fs_x>. | |
e_xstring = e_xstring && <fs_x>. | |
ENDLOOP. | |
ENDMETHOD. "convert_array_to_xstring | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Protected Method ZDKK_RIJNDAEL_UTILITY->CONVERT_XSTRING_TO_ARRAY | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_XSTRING TYPE XSTRING | |
* | [--->] I_LENGTH_IN_BYTE TYPE INT4(optional) | |
* | [<---] E_ARRAY LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD convert_xstring_to_array. | |
DATA: xstring_length_in_byte TYPE int4, | |
cursor TYPE int4. | |
CLEAR e_array. | |
xstring_length_in_byte = xstrlen( i_xstring ). | |
cursor = 0. | |
WHILE cursor < xstring_length_in_byte. | |
APPEND i_xstring+cursor(1) TO e_array. | |
cursor = cursor + 1. | |
ENDWHILE. | |
IF i_length_in_byte IS NOT INITIAL AND cursor < i_length_in_byte. | |
WHILE cursor < i_length_in_byte. | |
APPEND '00' TO e_array. | |
cursor = cursor + 1. | |
ENDWHILE. | |
ENDIF. | |
ENDMETHOD. "convert_xstring_to_xarray | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Public Method ZDKK_RIJNDAEL_UTILITY->DECRYPT_XSTRING | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_KEY TYPE XSTRING | |
* | [--->] I_DATA TYPE XSTRING | |
* | [<---] E_DATA TYPE XSTRING | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD decrypt_xstring. | |
DATA: data_length_in_byte TYPE int4, | |
number_of_blocks TYPE int4, | |
block_cursor TYPE int4, | |
data_array TYPE TABLE OF x, | |
round_key_array TYPE TABLE OF x, | |
round_cursor TYPE int4. | |
IF is_valid_key_xstring( i_key = i_key ) = abap_false. | |
RAISE EXCEPTION TYPE cx_me_illegal_argument | |
EXPORTING | |
name = 'I_KEY' | |
value = 'Incorrect key length'. | |
ENDIF. | |
"Prepare some data | |
data_length_in_byte = xstrlen( i_data ). | |
number_of_blocks = ceil( '1.0' * data_length_in_byte / m_block_length_in_byte ). | |
"Prepare temp data storage to work on | |
convert_xstring_to_array( | |
EXPORTING | |
i_xstring = i_data | |
i_length_in_byte = number_of_blocks * m_block_length_in_byte | |
IMPORTING | |
e_array = data_array ). | |
"Calculate all round keys | |
calculate_round_key_array( | |
EXPORTING | |
i_key = i_key | |
IMPORTING | |
e_round_key_array = round_key_array ). | |
"Final round | |
round_cursor = m_round. | |
"Round key addition | |
block_cursor = 0. | |
WHILE block_cursor < number_of_blocks. | |
array_xor( | |
EXPORTING | |
i_array = round_key_array | |
i_i_array_start_index = round_cursor * m_block_length_in_byte + 1 | |
i_c_array_start_index = block_cursor * m_block_length_in_byte + 1 | |
i_length_by_byte = m_block_length_in_byte | |
CHANGING | |
c_array = data_array | |
). | |
block_cursor = block_cursor + 1. | |
ENDWHILE. | |
"Shift Rows: | |
array_shift_rows_inv( | |
CHANGING | |
c_array = data_array | |
). | |
"Sub Byte: | |
array_sbox_inv( | |
CHANGING | |
c_data = data_array | |
). | |
"Middle n - 1 rounds | |
round_cursor = m_round - 1. | |
WHILE round_cursor > 0. | |
"Round key addition | |
block_cursor = 0. | |
WHILE block_cursor < number_of_blocks. | |
array_xor( | |
EXPORTING | |
i_array = round_key_array | |
i_i_array_start_index = round_cursor * m_block_length_in_byte + 1 | |
i_c_array_start_index = block_cursor * m_block_length_in_byte + 1 | |
i_length_by_byte = m_block_length_in_byte | |
CHANGING | |
c_array = data_array | |
). | |
block_cursor = block_cursor + 1. | |
ENDWHILE. | |
"Mix Columns: | |
array_mix_columns_inv( | |
CHANGING | |
c_array = data_array | |
). | |
"Shift Rows: | |
array_shift_rows_inv( | |
CHANGING | |
c_array = data_array | |
). | |
"Sub Byte: | |
array_sbox_inv( | |
CHANGING | |
c_data = data_array | |
). | |
round_cursor = round_cursor - 1. | |
ENDWHILE. | |
"Initial round key addition | |
block_cursor = 0. | |
round_cursor = 0. | |
WHILE block_cursor < number_of_blocks. | |
array_xor( | |
EXPORTING | |
i_array = round_key_array | |
i_i_array_start_index = round_cursor * m_block_length_in_byte + 1 | |
i_c_array_start_index = block_cursor * m_block_length_in_byte + 1 | |
i_length_by_byte = m_block_length_in_byte | |
CHANGING | |
c_array = data_array | |
). | |
block_cursor = block_cursor + 1. | |
ENDWHILE. | |
convert_array_to_xstring( | |
EXPORTING | |
i_array = data_array | |
IMPORTING | |
e_xstring = e_data | |
). | |
ENDMETHOD. "ENCRYPT_XSTRING | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Public Method ZDKK_RIJNDAEL_UTILITY->ENCRYPT_XSTRING | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_KEY TYPE XSTRING | |
* | [--->] I_DATA TYPE XSTRING | |
* | [<---] E_DATA TYPE XSTRING | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD encrypt_xstring. | |
DATA: data_length_in_byte TYPE int4, | |
number_of_blocks TYPE int4, | |
block_cursor TYPE int4, | |
data_array TYPE TABLE OF x, | |
round_key_array TYPE TABLE OF x, | |
round_cursor TYPE int4. | |
IF is_valid_key_xstring( i_key = i_key ) = abap_false. | |
RAISE EXCEPTION TYPE cx_me_illegal_argument | |
EXPORTING | |
name = 'I_KEY' | |
value = 'Incorrect key length'. | |
ENDIF. | |
"Prepare some data | |
data_length_in_byte = xstrlen( i_data ). | |
number_of_blocks = ceil( '1.0' * data_length_in_byte / m_block_length_in_byte ). | |
"Prepare temp data storage to work on | |
convert_xstring_to_array( | |
EXPORTING | |
i_xstring = i_data | |
i_length_in_byte = number_of_blocks * m_block_length_in_byte | |
IMPORTING | |
e_array = data_array ). | |
"Calculate all round keys | |
calculate_round_key_array( | |
EXPORTING | |
i_key = i_key | |
IMPORTING | |
e_round_key_array = round_key_array ). | |
"Initial round key addition | |
block_cursor = 0. | |
round_cursor = 0. | |
WHILE block_cursor < number_of_blocks. | |
array_xor( | |
EXPORTING | |
i_array = round_key_array | |
i_i_array_start_index = round_cursor * m_block_length_in_byte + 1 | |
i_c_array_start_index = block_cursor * m_block_length_in_byte + 1 | |
i_length_by_byte = m_block_length_in_byte | |
CHANGING | |
c_array = data_array | |
). | |
block_cursor = block_cursor + 1. | |
ENDWHILE. | |
"Middle n - 1 rounds | |
round_cursor = 1. | |
WHILE round_cursor < m_round. | |
"Sub Byte: | |
array_sbox( | |
CHANGING | |
c_data = data_array | |
). | |
"Shift Rows: | |
array_shift_rows( | |
CHANGING | |
c_array = data_array | |
). | |
"Mix Columns: | |
array_mix_columns( | |
CHANGING | |
c_array = data_array | |
). | |
"Round key addition | |
block_cursor = 0. | |
WHILE block_cursor < number_of_blocks. | |
array_xor( | |
EXPORTING | |
i_array = round_key_array | |
i_i_array_start_index = round_cursor * m_block_length_in_byte + 1 | |
i_c_array_start_index = block_cursor * m_block_length_in_byte + 1 | |
i_length_by_byte = m_block_length_in_byte | |
CHANGING | |
c_array = data_array | |
). | |
block_cursor = block_cursor + 1. | |
ENDWHILE. | |
round_cursor = round_cursor + 1. | |
ENDWHILE. | |
"Final round | |
round_cursor = m_round. | |
"Sub Byte: | |
array_sbox( | |
CHANGING | |
c_data = data_array | |
). | |
"Shift Rows: | |
array_shift_rows( | |
CHANGING | |
c_array = data_array | |
). | |
"Round key addition | |
block_cursor = 0. | |
WHILE block_cursor < number_of_blocks. | |
array_xor( | |
EXPORTING | |
i_array = round_key_array | |
i_i_array_start_index = round_cursor * m_block_length_in_byte + 1 | |
i_c_array_start_index = block_cursor * m_block_length_in_byte + 1 | |
i_length_by_byte = m_block_length_in_byte | |
CHANGING | |
c_array = data_array | |
). | |
block_cursor = block_cursor + 1. | |
ENDWHILE. | |
convert_array_to_xstring( | |
EXPORTING | |
i_array = data_array | |
IMPORTING | |
e_xstring = e_data | |
). | |
ENDMETHOD. "ENCRYPT_XSTRING | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Instance Public Method ZDKK_RIJNDAEL_UTILITY->IS_VALID_KEY_XSTRING | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_KEY TYPE XSTRING | |
* | [<-()] R_VALID TYPE BOOLE_D | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD is_valid_key_xstring. | |
IF xstrlen( i_key ) = m_key_length_in_byte. | |
r_valid = abap_true. | |
ELSE. | |
r_valid = abap_false. | |
ENDIF. | |
ENDMETHOD. "IS_VALID_KEY | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Private Method ZDKK_RIJNDAEL_UTILITY=>_BUILD_MULTIPLICATION | |
* +-------------------------------------------------------------------------------------------------+ | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _build_multiplication. | |
"Build Multiplication Table for 2 | |
APPEND '00' TO mt_multiplication_lookup_2. | |
APPEND '02' TO mt_multiplication_lookup_2. | |
APPEND '04' TO mt_multiplication_lookup_2. | |
APPEND '06' TO mt_multiplication_lookup_2. | |
APPEND '08' TO mt_multiplication_lookup_2. | |
APPEND '0A' TO mt_multiplication_lookup_2. | |
APPEND '0C' TO mt_multiplication_lookup_2. | |
APPEND '0E' TO mt_multiplication_lookup_2. | |
APPEND '10' TO mt_multiplication_lookup_2. | |
APPEND '12' TO mt_multiplication_lookup_2. | |
APPEND '14' TO mt_multiplication_lookup_2. | |
APPEND '16' TO mt_multiplication_lookup_2. | |
APPEND '18' TO mt_multiplication_lookup_2. | |
APPEND '1A' TO mt_multiplication_lookup_2. | |
APPEND '1C' TO mt_multiplication_lookup_2. | |
APPEND '1E' TO mt_multiplication_lookup_2. | |
APPEND '20' TO mt_multiplication_lookup_2. | |
APPEND '22' TO mt_multiplication_lookup_2. | |
APPEND '24' TO mt_multiplication_lookup_2. | |
APPEND '26' TO mt_multiplication_lookup_2. | |
APPEND '28' TO mt_multiplication_lookup_2. | |
APPEND '2A' TO mt_multiplication_lookup_2. | |
APPEND '2C' TO mt_multiplication_lookup_2. | |
APPEND '2E' TO mt_multiplication_lookup_2. | |
APPEND '30' TO mt_multiplication_lookup_2. | |
APPEND '32' TO mt_multiplication_lookup_2. | |
APPEND '34' TO mt_multiplication_lookup_2. | |
APPEND '36' TO mt_multiplication_lookup_2. | |
APPEND '38' TO mt_multiplication_lookup_2. | |
APPEND '3A' TO mt_multiplication_lookup_2. | |
APPEND '3C' TO mt_multiplication_lookup_2. | |
APPEND '3E' TO mt_multiplication_lookup_2. | |
APPEND '40' TO mt_multiplication_lookup_2. | |
APPEND '42' TO mt_multiplication_lookup_2. | |
APPEND '44' TO mt_multiplication_lookup_2. | |
APPEND '46' TO mt_multiplication_lookup_2. | |
APPEND '48' TO mt_multiplication_lookup_2. | |
APPEND '4A' TO mt_multiplication_lookup_2. | |
APPEND '4C' TO mt_multiplication_lookup_2. | |
APPEND '4E' TO mt_multiplication_lookup_2. | |
APPEND '50' TO mt_multiplication_lookup_2. | |
APPEND '52' TO mt_multiplication_lookup_2. | |
APPEND '54' TO mt_multiplication_lookup_2. | |
APPEND '56' TO mt_multiplication_lookup_2. | |
APPEND '58' TO mt_multiplication_lookup_2. | |
APPEND '5A' TO mt_multiplication_lookup_2. | |
APPEND '5C' TO mt_multiplication_lookup_2. | |
APPEND '5E' TO mt_multiplication_lookup_2. | |
APPEND '60' TO mt_multiplication_lookup_2. | |
APPEND '62' TO mt_multiplication_lookup_2. | |
APPEND '64' TO mt_multiplication_lookup_2. | |
APPEND '66' TO mt_multiplication_lookup_2. | |
APPEND '68' TO mt_multiplication_lookup_2. | |
APPEND '6A' TO mt_multiplication_lookup_2. | |
APPEND '6C' TO mt_multiplication_lookup_2. | |
APPEND '6E' TO mt_multiplication_lookup_2. | |
APPEND '70' TO mt_multiplication_lookup_2. | |
APPEND '72' TO mt_multiplication_lookup_2. | |
APPEND '74' TO mt_multiplication_lookup_2. | |
APPEND '76' TO mt_multiplication_lookup_2. | |
APPEND '78' TO mt_multiplication_lookup_2. | |
APPEND '7A' TO mt_multiplication_lookup_2. | |
APPEND '7C' TO mt_multiplication_lookup_2. | |
APPEND '7E' TO mt_multiplication_lookup_2. | |
APPEND '80' TO mt_multiplication_lookup_2. | |
APPEND '82' TO mt_multiplication_lookup_2. | |
APPEND '84' TO mt_multiplication_lookup_2. | |
APPEND '86' TO mt_multiplication_lookup_2. | |
APPEND '88' TO mt_multiplication_lookup_2. | |
APPEND '8A' TO mt_multiplication_lookup_2. | |
APPEND '8C' TO mt_multiplication_lookup_2. | |
APPEND '8E' TO mt_multiplication_lookup_2. | |
APPEND '90' TO mt_multiplication_lookup_2. | |
APPEND '92' TO mt_multiplication_lookup_2. | |
APPEND '94' TO mt_multiplication_lookup_2. | |
APPEND '96' TO mt_multiplication_lookup_2. | |
APPEND '98' TO mt_multiplication_lookup_2. | |
APPEND '9A' TO mt_multiplication_lookup_2. | |
APPEND '9C' TO mt_multiplication_lookup_2. | |
APPEND '9E' TO mt_multiplication_lookup_2. | |
APPEND 'A0' TO mt_multiplication_lookup_2. | |
APPEND 'A2' TO mt_multiplication_lookup_2. | |
APPEND 'A4' TO mt_multiplication_lookup_2. | |
APPEND 'A6' TO mt_multiplication_lookup_2. | |
APPEND 'A8' TO mt_multiplication_lookup_2. | |
APPEND 'AA' TO mt_multiplication_lookup_2. | |
APPEND 'AC' TO mt_multiplication_lookup_2. | |
APPEND 'AE' TO mt_multiplication_lookup_2. | |
APPEND 'B0' TO mt_multiplication_lookup_2. | |
APPEND 'B2' TO mt_multiplication_lookup_2. | |
APPEND 'B4' TO mt_multiplication_lookup_2. | |
APPEND 'B6' TO mt_multiplication_lookup_2. | |
APPEND 'B8' TO mt_multiplication_lookup_2. | |
APPEND 'BA' TO mt_multiplication_lookup_2. | |
APPEND 'BC' TO mt_multiplication_lookup_2. | |
APPEND 'BE' TO mt_multiplication_lookup_2. | |
APPEND 'C0' TO mt_multiplication_lookup_2. | |
APPEND 'C2' TO mt_multiplication_lookup_2. | |
APPEND 'C4' TO mt_multiplication_lookup_2. | |
APPEND 'C6' TO mt_multiplication_lookup_2. | |
APPEND 'C8' TO mt_multiplication_lookup_2. | |
APPEND 'CA' TO mt_multiplication_lookup_2. | |
APPEND 'CC' TO mt_multiplication_lookup_2. | |
APPEND 'CE' TO mt_multiplication_lookup_2. | |
APPEND 'D0' TO mt_multiplication_lookup_2. | |
APPEND 'D2' TO mt_multiplication_lookup_2. | |
APPEND 'D4' TO mt_multiplication_lookup_2. | |
APPEND 'D6' TO mt_multiplication_lookup_2. | |
APPEND 'D8' TO mt_multiplication_lookup_2. | |
APPEND 'DA' TO mt_multiplication_lookup_2. | |
APPEND 'DC' TO mt_multiplication_lookup_2. | |
APPEND 'DE' TO mt_multiplication_lookup_2. | |
APPEND 'E0' TO mt_multiplication_lookup_2. | |
APPEND 'E2' TO mt_multiplication_lookup_2. | |
APPEND 'E4' TO mt_multiplication_lookup_2. | |
APPEND 'E6' TO mt_multiplication_lookup_2. | |
APPEND 'E8' TO mt_multiplication_lookup_2. | |
APPEND 'EA' TO mt_multiplication_lookup_2. | |
APPEND 'EC' TO mt_multiplication_lookup_2. | |
APPEND 'EE' TO mt_multiplication_lookup_2. | |
APPEND 'F0' TO mt_multiplication_lookup_2. | |
APPEND 'F2' TO mt_multiplication_lookup_2. | |
APPEND 'F4' TO mt_multiplication_lookup_2. | |
APPEND 'F6' TO mt_multiplication_lookup_2. | |
APPEND 'F8' TO mt_multiplication_lookup_2. | |
APPEND 'FA' TO mt_multiplication_lookup_2. | |
APPEND 'FC' TO mt_multiplication_lookup_2. | |
APPEND 'FE' TO mt_multiplication_lookup_2. | |
APPEND '1B' TO mt_multiplication_lookup_2. | |
APPEND '19' TO mt_multiplication_lookup_2. | |
APPEND '1F' TO mt_multiplication_lookup_2. | |
APPEND '1D' TO mt_multiplication_lookup_2. | |
APPEND '13' TO mt_multiplication_lookup_2. | |
APPEND '11' TO mt_multiplication_lookup_2. | |
APPEND '17' TO mt_multiplication_lookup_2. | |
APPEND '15' TO mt_multiplication_lookup_2. | |
APPEND '0B' TO mt_multiplication_lookup_2. | |
APPEND '09' TO mt_multiplication_lookup_2. | |
APPEND '0F' TO mt_multiplication_lookup_2. | |
APPEND '0D' TO mt_multiplication_lookup_2. | |
APPEND '03' TO mt_multiplication_lookup_2. | |
APPEND '01' TO mt_multiplication_lookup_2. | |
APPEND '07' TO mt_multiplication_lookup_2. | |
APPEND '05' TO mt_multiplication_lookup_2. | |
APPEND '3B' TO mt_multiplication_lookup_2. | |
APPEND '39' TO mt_multiplication_lookup_2. | |
APPEND '3F' TO mt_multiplication_lookup_2. | |
APPEND '3D' TO mt_multiplication_lookup_2. | |
APPEND '33' TO mt_multiplication_lookup_2. | |
APPEND '31' TO mt_multiplication_lookup_2. | |
APPEND '37' TO mt_multiplication_lookup_2. | |
APPEND '35' TO mt_multiplication_lookup_2. | |
APPEND '2B' TO mt_multiplication_lookup_2. | |
APPEND '29' TO mt_multiplication_lookup_2. | |
APPEND '2F' TO mt_multiplication_lookup_2. | |
APPEND '2D' TO mt_multiplication_lookup_2. | |
APPEND '23' TO mt_multiplication_lookup_2. | |
APPEND '21' TO mt_multiplication_lookup_2. | |
APPEND '27' TO mt_multiplication_lookup_2. | |
APPEND '25' TO mt_multiplication_lookup_2. | |
APPEND '5B' TO mt_multiplication_lookup_2. | |
APPEND '59' TO mt_multiplication_lookup_2. | |
APPEND '5F' TO mt_multiplication_lookup_2. | |
APPEND '5D' TO mt_multiplication_lookup_2. | |
APPEND '53' TO mt_multiplication_lookup_2. | |
APPEND '51' TO mt_multiplication_lookup_2. | |
APPEND '57' TO mt_multiplication_lookup_2. | |
APPEND '55' TO mt_multiplication_lookup_2. | |
APPEND '4B' TO mt_multiplication_lookup_2. | |
APPEND '49' TO mt_multiplication_lookup_2. | |
APPEND '4F' TO mt_multiplication_lookup_2. | |
APPEND '4D' TO mt_multiplication_lookup_2. | |
APPEND '43' TO mt_multiplication_lookup_2. | |
APPEND '41' TO mt_multiplication_lookup_2. | |
APPEND '47' TO mt_multiplication_lookup_2. | |
APPEND '45' TO mt_multiplication_lookup_2. | |
APPEND '7B' TO mt_multiplication_lookup_2. | |
APPEND '79' TO mt_multiplication_lookup_2. | |
APPEND '7F' TO mt_multiplication_lookup_2. | |
APPEND '7D' TO mt_multiplication_lookup_2. | |
APPEND '73' TO mt_multiplication_lookup_2. | |
APPEND '71' TO mt_multiplication_lookup_2. | |
APPEND '77' TO mt_multiplication_lookup_2. | |
APPEND '75' TO mt_multiplication_lookup_2. | |
APPEND '6B' TO mt_multiplication_lookup_2. | |
APPEND '69' TO mt_multiplication_lookup_2. | |
APPEND '6F' TO mt_multiplication_lookup_2. | |
APPEND '6D' TO mt_multiplication_lookup_2. | |
APPEND '63' TO mt_multiplication_lookup_2. | |
APPEND '61' TO mt_multiplication_lookup_2. | |
APPEND '67' TO mt_multiplication_lookup_2. | |
APPEND '65' TO mt_multiplication_lookup_2. | |
APPEND '9B' TO mt_multiplication_lookup_2. | |
APPEND '99' TO mt_multiplication_lookup_2. | |
APPEND '9F' TO mt_multiplication_lookup_2. | |
APPEND '9D' TO mt_multiplication_lookup_2. | |
APPEND '93' TO mt_multiplication_lookup_2. | |
APPEND '91' TO mt_multiplication_lookup_2. | |
APPEND '97' TO mt_multiplication_lookup_2. | |
APPEND '95' TO mt_multiplication_lookup_2. | |
APPEND '8B' TO mt_multiplication_lookup_2. | |
APPEND '89' TO mt_multiplication_lookup_2. | |
APPEND '8F' TO mt_multiplication_lookup_2. | |
APPEND '8D' TO mt_multiplication_lookup_2. | |
APPEND '83' TO mt_multiplication_lookup_2. | |
APPEND '81' TO mt_multiplication_lookup_2. | |
APPEND '87' TO mt_multiplication_lookup_2. | |
APPEND '85' TO mt_multiplication_lookup_2. | |
APPEND 'BB' TO mt_multiplication_lookup_2. | |
APPEND 'B9' TO mt_multiplication_lookup_2. | |
APPEND 'BF' TO mt_multiplication_lookup_2. | |
APPEND 'BD' TO mt_multiplication_lookup_2. | |
APPEND 'B3' TO mt_multiplication_lookup_2. | |
APPEND 'B1' TO mt_multiplication_lookup_2. | |
APPEND 'B7' TO mt_multiplication_lookup_2. | |
APPEND 'B5' TO mt_multiplication_lookup_2. | |
APPEND 'AB' TO mt_multiplication_lookup_2. | |
APPEND 'A9' TO mt_multiplication_lookup_2. | |
APPEND 'AF' TO mt_multiplication_lookup_2. | |
APPEND 'AD' TO mt_multiplication_lookup_2. | |
APPEND 'A3' TO mt_multiplication_lookup_2. | |
APPEND 'A1' TO mt_multiplication_lookup_2. | |
APPEND 'A7' TO mt_multiplication_lookup_2. | |
APPEND 'A5' TO mt_multiplication_lookup_2. | |
APPEND 'DB' TO mt_multiplication_lookup_2. | |
APPEND 'D9' TO mt_multiplication_lookup_2. | |
APPEND 'DF' TO mt_multiplication_lookup_2. | |
APPEND 'DD' TO mt_multiplication_lookup_2. | |
APPEND 'D3' TO mt_multiplication_lookup_2. | |
APPEND 'D1' TO mt_multiplication_lookup_2. | |
APPEND 'D7' TO mt_multiplication_lookup_2. | |
APPEND 'D5' TO mt_multiplication_lookup_2. | |
APPEND 'CB' TO mt_multiplication_lookup_2. | |
APPEND 'C9' TO mt_multiplication_lookup_2. | |
APPEND 'CF' TO mt_multiplication_lookup_2. | |
APPEND 'CD' TO mt_multiplication_lookup_2. | |
APPEND 'C3' TO mt_multiplication_lookup_2. | |
APPEND 'C1' TO mt_multiplication_lookup_2. | |
APPEND 'C7' TO mt_multiplication_lookup_2. | |
APPEND 'C5' TO mt_multiplication_lookup_2. | |
APPEND 'FB' TO mt_multiplication_lookup_2. | |
APPEND 'F9' TO mt_multiplication_lookup_2. | |
APPEND 'FF' TO mt_multiplication_lookup_2. | |
APPEND 'FD' TO mt_multiplication_lookup_2. | |
APPEND 'F3' TO mt_multiplication_lookup_2. | |
APPEND 'F1' TO mt_multiplication_lookup_2. | |
APPEND 'F7' TO mt_multiplication_lookup_2. | |
APPEND 'F5' TO mt_multiplication_lookup_2. | |
APPEND 'EB' TO mt_multiplication_lookup_2. | |
APPEND 'E9' TO mt_multiplication_lookup_2. | |
APPEND 'EF' TO mt_multiplication_lookup_2. | |
APPEND 'ED' TO mt_multiplication_lookup_2. | |
APPEND 'E3' TO mt_multiplication_lookup_2. | |
APPEND 'E1' TO mt_multiplication_lookup_2. | |
APPEND 'E7' TO mt_multiplication_lookup_2. | |
APPEND 'E5' TO mt_multiplication_lookup_2. | |
"Build Multiplication Table for 3 | |
APPEND '00' TO mt_multiplication_lookup_3. | |
APPEND '03' TO mt_multiplication_lookup_3. | |
APPEND '06' TO mt_multiplication_lookup_3. | |
APPEND '05' TO mt_multiplication_lookup_3. | |
APPEND '0C' TO mt_multiplication_lookup_3. | |
APPEND '0F' TO mt_multiplication_lookup_3. | |
APPEND '0A' TO mt_multiplication_lookup_3. | |
APPEND '09' TO mt_multiplication_lookup_3. | |
APPEND '18' TO mt_multiplication_lookup_3. | |
APPEND '1B' TO mt_multiplication_lookup_3. | |
APPEND '1E' TO mt_multiplication_lookup_3. | |
APPEND '1D' TO mt_multiplication_lookup_3. | |
APPEND '14' TO mt_multiplication_lookup_3. | |
APPEND '17' TO mt_multiplication_lookup_3. | |
APPEND '12' TO mt_multiplication_lookup_3. | |
APPEND '11' TO mt_multiplication_lookup_3. | |
APPEND '30' TO mt_multiplication_lookup_3. | |
APPEND '33' TO mt_multiplication_lookup_3. | |
APPEND '36' TO mt_multiplication_lookup_3. | |
APPEND '35' TO mt_multiplication_lookup_3. | |
APPEND '3C' TO mt_multiplication_lookup_3. | |
APPEND '3F' TO mt_multiplication_lookup_3. | |
APPEND '3A' TO mt_multiplication_lookup_3. | |
APPEND '39' TO mt_multiplication_lookup_3. | |
APPEND '28' TO mt_multiplication_lookup_3. | |
APPEND '2B' TO mt_multiplication_lookup_3. | |
APPEND '2E' TO mt_multiplication_lookup_3. | |
APPEND '2D' TO mt_multiplication_lookup_3. | |
APPEND '24' TO mt_multiplication_lookup_3. | |
APPEND '27' TO mt_multiplication_lookup_3. | |
APPEND '22' TO mt_multiplication_lookup_3. | |
APPEND '21' TO mt_multiplication_lookup_3. | |
APPEND '60' TO mt_multiplication_lookup_3. | |
APPEND '63' TO mt_multiplication_lookup_3. | |
APPEND '66' TO mt_multiplication_lookup_3. | |
APPEND '65' TO mt_multiplication_lookup_3. | |
APPEND '6C' TO mt_multiplication_lookup_3. | |
APPEND '6F' TO mt_multiplication_lookup_3. | |
APPEND '6A' TO mt_multiplication_lookup_3. | |
APPEND '69' TO mt_multiplication_lookup_3. | |
APPEND '78' TO mt_multiplication_lookup_3. | |
APPEND '7B' TO mt_multiplication_lookup_3. | |
APPEND '7E' TO mt_multiplication_lookup_3. | |
APPEND '7D' TO mt_multiplication_lookup_3. | |
APPEND '74' TO mt_multiplication_lookup_3. | |
APPEND '77' TO mt_multiplication_lookup_3. | |
APPEND '72' TO mt_multiplication_lookup_3. | |
APPEND '71' TO mt_multiplication_lookup_3. | |
APPEND '50' TO mt_multiplication_lookup_3. | |
APPEND '53' TO mt_multiplication_lookup_3. | |
APPEND '56' TO mt_multiplication_lookup_3. | |
APPEND '55' TO mt_multiplication_lookup_3. | |
APPEND '5C' TO mt_multiplication_lookup_3. | |
APPEND '5F' TO mt_multiplication_lookup_3. | |
APPEND '5A' TO mt_multiplication_lookup_3. | |
APPEND '59' TO mt_multiplication_lookup_3. | |
APPEND '48' TO mt_multiplication_lookup_3. | |
APPEND '4B' TO mt_multiplication_lookup_3. | |
APPEND '4E' TO mt_multiplication_lookup_3. | |
APPEND '4D' TO mt_multiplication_lookup_3. | |
APPEND '44' TO mt_multiplication_lookup_3. | |
APPEND '47' TO mt_multiplication_lookup_3. | |
APPEND '42' TO mt_multiplication_lookup_3. | |
APPEND '41' TO mt_multiplication_lookup_3. | |
APPEND 'C0' TO mt_multiplication_lookup_3. | |
APPEND 'C3' TO mt_multiplication_lookup_3. | |
APPEND 'C6' TO mt_multiplication_lookup_3. | |
APPEND 'C5' TO mt_multiplication_lookup_3. | |
APPEND 'CC' TO mt_multiplication_lookup_3. | |
APPEND 'CF' TO mt_multiplication_lookup_3. | |
APPEND 'CA' TO mt_multiplication_lookup_3. | |
APPEND 'C9' TO mt_multiplication_lookup_3. | |
APPEND 'D8' TO mt_multiplication_lookup_3. | |
APPEND 'DB' TO mt_multiplication_lookup_3. | |
APPEND 'DE' TO mt_multiplication_lookup_3. | |
APPEND 'DD' TO mt_multiplication_lookup_3. | |
APPEND 'D4' TO mt_multiplication_lookup_3. | |
APPEND 'D7' TO mt_multiplication_lookup_3. | |
APPEND 'D2' TO mt_multiplication_lookup_3. | |
APPEND 'D1' TO mt_multiplication_lookup_3. | |
APPEND 'F0' TO mt_multiplication_lookup_3. | |
APPEND 'F3' TO mt_multiplication_lookup_3. | |
APPEND 'F6' TO mt_multiplication_lookup_3. | |
APPEND 'F5' TO mt_multiplication_lookup_3. | |
APPEND 'FC' TO mt_multiplication_lookup_3. | |
APPEND 'FF' TO mt_multiplication_lookup_3. | |
APPEND 'FA' TO mt_multiplication_lookup_3. | |
APPEND 'F9' TO mt_multiplication_lookup_3. | |
APPEND 'E8' TO mt_multiplication_lookup_3. | |
APPEND 'EB' TO mt_multiplication_lookup_3. | |
APPEND 'EE' TO mt_multiplication_lookup_3. | |
APPEND 'ED' TO mt_multiplication_lookup_3. | |
APPEND 'E4' TO mt_multiplication_lookup_3. | |
APPEND 'E7' TO mt_multiplication_lookup_3. | |
APPEND 'E2' TO mt_multiplication_lookup_3. | |
APPEND 'E1' TO mt_multiplication_lookup_3. | |
APPEND 'A0' TO mt_multiplication_lookup_3. | |
APPEND 'A3' TO mt_multiplication_lookup_3. | |
APPEND 'A6' TO mt_multiplication_lookup_3. | |
APPEND 'A5' TO mt_multiplication_lookup_3. | |
APPEND 'AC' TO mt_multiplication_lookup_3. | |
APPEND 'AF' TO mt_multiplication_lookup_3. | |
APPEND 'AA' TO mt_multiplication_lookup_3. | |
APPEND 'A9' TO mt_multiplication_lookup_3. | |
APPEND 'B8' TO mt_multiplication_lookup_3. | |
APPEND 'BB' TO mt_multiplication_lookup_3. | |
APPEND 'BE' TO mt_multiplication_lookup_3. | |
APPEND 'BD' TO mt_multiplication_lookup_3. | |
APPEND 'B4' TO mt_multiplication_lookup_3. | |
APPEND 'B7' TO mt_multiplication_lookup_3. | |
APPEND 'B2' TO mt_multiplication_lookup_3. | |
APPEND 'B1' TO mt_multiplication_lookup_3. | |
APPEND '90' TO mt_multiplication_lookup_3. | |
APPEND '93' TO mt_multiplication_lookup_3. | |
APPEND '96' TO mt_multiplication_lookup_3. | |
APPEND '95' TO mt_multiplication_lookup_3. | |
APPEND '9C' TO mt_multiplication_lookup_3. | |
APPEND '9F' TO mt_multiplication_lookup_3. | |
APPEND '9A' TO mt_multiplication_lookup_3. | |
APPEND '99' TO mt_multiplication_lookup_3. | |
APPEND '88' TO mt_multiplication_lookup_3. | |
APPEND '8B' TO mt_multiplication_lookup_3. | |
APPEND '8E' TO mt_multiplication_lookup_3. | |
APPEND '8D' TO mt_multiplication_lookup_3. | |
APPEND '84' TO mt_multiplication_lookup_3. | |
APPEND '87' TO mt_multiplication_lookup_3. | |
APPEND '82' TO mt_multiplication_lookup_3. | |
APPEND '81' TO mt_multiplication_lookup_3. | |
APPEND '9B' TO mt_multiplication_lookup_3. | |
APPEND '98' TO mt_multiplication_lookup_3. | |
APPEND '9D' TO mt_multiplication_lookup_3. | |
APPEND '9E' TO mt_multiplication_lookup_3. | |
APPEND '97' TO mt_multiplication_lookup_3. | |
APPEND '94' TO mt_multiplication_lookup_3. | |
APPEND '91' TO mt_multiplication_lookup_3. | |
APPEND '92' TO mt_multiplication_lookup_3. | |
APPEND '83' TO mt_multiplication_lookup_3. | |
APPEND '80' TO mt_multiplication_lookup_3. | |
APPEND '85' TO mt_multiplication_lookup_3. | |
APPEND '86' TO mt_multiplication_lookup_3. | |
APPEND '8F' TO mt_multiplication_lookup_3. | |
APPEND '8C' TO mt_multiplication_lookup_3. | |
APPEND '89' TO mt_multiplication_lookup_3. | |
APPEND '8A' TO mt_multiplication_lookup_3. | |
APPEND 'AB' TO mt_multiplication_lookup_3. | |
APPEND 'A8' TO mt_multiplication_lookup_3. | |
APPEND 'AD' TO mt_multiplication_lookup_3. | |
APPEND 'AE' TO mt_multiplication_lookup_3. | |
APPEND 'A7' TO mt_multiplication_lookup_3. | |
APPEND 'A4' TO mt_multiplication_lookup_3. | |
APPEND 'A1' TO mt_multiplication_lookup_3. | |
APPEND 'A2' TO mt_multiplication_lookup_3. | |
APPEND 'B3' TO mt_multiplication_lookup_3. | |
APPEND 'B0' TO mt_multiplication_lookup_3. | |
APPEND 'B5' TO mt_multiplication_lookup_3. | |
APPEND 'B6' TO mt_multiplication_lookup_3. | |
APPEND 'BF' TO mt_multiplication_lookup_3. | |
APPEND 'BC' TO mt_multiplication_lookup_3. | |
APPEND 'B9' TO mt_multiplication_lookup_3. | |
APPEND 'BA' TO mt_multiplication_lookup_3. | |
APPEND 'FB' TO mt_multiplication_lookup_3. | |
APPEND 'F8' TO mt_multiplication_lookup_3. | |
APPEND 'FD' TO mt_multiplication_lookup_3. | |
APPEND 'FE' TO mt_multiplication_lookup_3. | |
APPEND 'F7' TO mt_multiplication_lookup_3. | |
APPEND 'F4' TO mt_multiplication_lookup_3. | |
APPEND 'F1' TO mt_multiplication_lookup_3. | |
APPEND 'F2' TO mt_multiplication_lookup_3. | |
APPEND 'E3' TO mt_multiplication_lookup_3. | |
APPEND 'E0' TO mt_multiplication_lookup_3. | |
APPEND 'E5' TO mt_multiplication_lookup_3. | |
APPEND 'E6' TO mt_multiplication_lookup_3. | |
APPEND 'EF' TO mt_multiplication_lookup_3. | |
APPEND 'EC' TO mt_multiplication_lookup_3. | |
APPEND 'E9' TO mt_multiplication_lookup_3. | |
APPEND 'EA' TO mt_multiplication_lookup_3. | |
APPEND 'CB' TO mt_multiplication_lookup_3. | |
APPEND 'C8' TO mt_multiplication_lookup_3. | |
APPEND 'CD' TO mt_multiplication_lookup_3. | |
APPEND 'CE' TO mt_multiplication_lookup_3. | |
APPEND 'C7' TO mt_multiplication_lookup_3. | |
APPEND 'C4' TO mt_multiplication_lookup_3. | |
APPEND 'C1' TO mt_multiplication_lookup_3. | |
APPEND 'C2' TO mt_multiplication_lookup_3. | |
APPEND 'D3' TO mt_multiplication_lookup_3. | |
APPEND 'D0' TO mt_multiplication_lookup_3. | |
APPEND 'D5' TO mt_multiplication_lookup_3. | |
APPEND 'D6' TO mt_multiplication_lookup_3. | |
APPEND 'DF' TO mt_multiplication_lookup_3. | |
APPEND 'DC' TO mt_multiplication_lookup_3. | |
APPEND 'D9' TO mt_multiplication_lookup_3. | |
APPEND 'DA' TO mt_multiplication_lookup_3. | |
APPEND '5B' TO mt_multiplication_lookup_3. | |
APPEND '58' TO mt_multiplication_lookup_3. | |
APPEND '5D' TO mt_multiplication_lookup_3. | |
APPEND '5E' TO mt_multiplication_lookup_3. | |
APPEND '57' TO mt_multiplication_lookup_3. | |
APPEND '54' TO mt_multiplication_lookup_3. | |
APPEND '51' TO mt_multiplication_lookup_3. | |
APPEND '52' TO mt_multiplication_lookup_3. | |
APPEND '43' TO mt_multiplication_lookup_3. | |
APPEND '40' TO mt_multiplication_lookup_3. | |
APPEND '45' TO mt_multiplication_lookup_3. | |
APPEND '46' TO mt_multiplication_lookup_3. | |
APPEND '4F' TO mt_multiplication_lookup_3. | |
APPEND '4C' TO mt_multiplication_lookup_3. | |
APPEND '49' TO mt_multiplication_lookup_3. | |
APPEND '4A' TO mt_multiplication_lookup_3. | |
APPEND '6B' TO mt_multiplication_lookup_3. | |
APPEND '68' TO mt_multiplication_lookup_3. | |
APPEND '6D' TO mt_multiplication_lookup_3. | |
APPEND '6E' TO mt_multiplication_lookup_3. | |
APPEND '67' TO mt_multiplication_lookup_3. | |
APPEND '64' TO mt_multiplication_lookup_3. | |
APPEND '61' TO mt_multiplication_lookup_3. | |
APPEND '62' TO mt_multiplication_lookup_3. | |
APPEND '73' TO mt_multiplication_lookup_3. | |
APPEND '70' TO mt_multiplication_lookup_3. | |
APPEND '75' TO mt_multiplication_lookup_3. | |
APPEND '76' TO mt_multiplication_lookup_3. | |
APPEND '7F' TO mt_multiplication_lookup_3. | |
APPEND '7C' TO mt_multiplication_lookup_3. | |
APPEND '79' TO mt_multiplication_lookup_3. | |
APPEND '7A' TO mt_multiplication_lookup_3. | |
APPEND '3B' TO mt_multiplication_lookup_3. | |
APPEND '38' TO mt_multiplication_lookup_3. | |
APPEND '3D' TO mt_multiplication_lookup_3. | |
APPEND '3E' TO mt_multiplication_lookup_3. | |
APPEND '37' TO mt_multiplication_lookup_3. | |
APPEND '34' TO mt_multiplication_lookup_3. | |
APPEND '31' TO mt_multiplication_lookup_3. | |
APPEND '32' TO mt_multiplication_lookup_3. | |
APPEND '23' TO mt_multiplication_lookup_3. | |
APPEND '20' TO mt_multiplication_lookup_3. | |
APPEND '25' TO mt_multiplication_lookup_3. | |
APPEND '26' TO mt_multiplication_lookup_3. | |
APPEND '2F' TO mt_multiplication_lookup_3. | |
APPEND '2C' TO mt_multiplication_lookup_3. | |
APPEND '29' TO mt_multiplication_lookup_3. | |
APPEND '2A' TO mt_multiplication_lookup_3. | |
APPEND '0B' TO mt_multiplication_lookup_3. | |
APPEND '08' TO mt_multiplication_lookup_3. | |
APPEND '0D' TO mt_multiplication_lookup_3. | |
APPEND '0E' TO mt_multiplication_lookup_3. | |
APPEND '07' TO mt_multiplication_lookup_3. | |
APPEND '04' TO mt_multiplication_lookup_3. | |
APPEND '01' TO mt_multiplication_lookup_3. | |
APPEND '02' TO mt_multiplication_lookup_3. | |
APPEND '13' TO mt_multiplication_lookup_3. | |
APPEND '10' TO mt_multiplication_lookup_3. | |
APPEND '15' TO mt_multiplication_lookup_3. | |
APPEND '16' TO mt_multiplication_lookup_3. | |
APPEND '1F' TO mt_multiplication_lookup_3. | |
APPEND '1C' TO mt_multiplication_lookup_3. | |
APPEND '19' TO mt_multiplication_lookup_3. | |
APPEND '1A' TO mt_multiplication_lookup_3. | |
"Build Multiplication Table for 9 | |
APPEND '00' TO mt_multiplication_lookup_9. | |
APPEND '09' TO mt_multiplication_lookup_9. | |
APPEND '12' TO mt_multiplication_lookup_9. | |
APPEND '1B' TO mt_multiplication_lookup_9. | |
APPEND '24' TO mt_multiplication_lookup_9. | |
APPEND '2D' TO mt_multiplication_lookup_9. | |
APPEND '36' TO mt_multiplication_lookup_9. | |
APPEND '3F' TO mt_multiplication_lookup_9. | |
APPEND '48' TO mt_multiplication_lookup_9. | |
APPEND '41' TO mt_multiplication_lookup_9. | |
APPEND '5A' TO mt_multiplication_lookup_9. | |
APPEND '53' TO mt_multiplication_lookup_9. | |
APPEND '6C' TO mt_multiplication_lookup_9. | |
APPEND '65' TO mt_multiplication_lookup_9. | |
APPEND '7E' TO mt_multiplication_lookup_9. | |
APPEND '77' TO mt_multiplication_lookup_9. | |
APPEND '90' TO mt_multiplication_lookup_9. | |
APPEND '99' TO mt_multiplication_lookup_9. | |
APPEND '82' TO mt_multiplication_lookup_9. | |
APPEND '8B' TO mt_multiplication_lookup_9. | |
APPEND 'B4' TO mt_multiplication_lookup_9. | |
APPEND 'BD' TO mt_multiplication_lookup_9. | |
APPEND 'A6' TO mt_multiplication_lookup_9. | |
APPEND 'AF' TO mt_multiplication_lookup_9. | |
APPEND 'D8' TO mt_multiplication_lookup_9. | |
APPEND 'D1' TO mt_multiplication_lookup_9. | |
APPEND 'CA' TO mt_multiplication_lookup_9. | |
APPEND 'C3' TO mt_multiplication_lookup_9. | |
APPEND 'FC' TO mt_multiplication_lookup_9. | |
APPEND 'F5' TO mt_multiplication_lookup_9. | |
APPEND 'EE' TO mt_multiplication_lookup_9. | |
APPEND 'E7' TO mt_multiplication_lookup_9. | |
APPEND '3B' TO mt_multiplication_lookup_9. | |
APPEND '32' TO mt_multiplication_lookup_9. | |
APPEND '29' TO mt_multiplication_lookup_9. | |
APPEND '20' TO mt_multiplication_lookup_9. | |
APPEND '1F' TO mt_multiplication_lookup_9. | |
APPEND '16' TO mt_multiplication_lookup_9. | |
APPEND '0D' TO mt_multiplication_lookup_9. | |
APPEND '04' TO mt_multiplication_lookup_9. | |
APPEND '73' TO mt_multiplication_lookup_9. | |
APPEND '7A' TO mt_multiplication_lookup_9. | |
APPEND '61' TO mt_multiplication_lookup_9. | |
APPEND '68' TO mt_multiplication_lookup_9. | |
APPEND '57' TO mt_multiplication_lookup_9. | |
APPEND '5E' TO mt_multiplication_lookup_9. | |
APPEND '45' TO mt_multiplication_lookup_9. | |
APPEND '4C' TO mt_multiplication_lookup_9. | |
APPEND 'AB' TO mt_multiplication_lookup_9. | |
APPEND 'A2' TO mt_multiplication_lookup_9. | |
APPEND 'B9' TO mt_multiplication_lookup_9. | |
APPEND 'B0' TO mt_multiplication_lookup_9. | |
APPEND '8F' TO mt_multiplication_lookup_9. | |
APPEND '86' TO mt_multiplication_lookup_9. | |
APPEND '9D' TO mt_multiplication_lookup_9. | |
APPEND '94' TO mt_multiplication_lookup_9. | |
APPEND 'E3' TO mt_multiplication_lookup_9. | |
APPEND 'EA' TO mt_multiplication_lookup_9. | |
APPEND 'F1' TO mt_multiplication_lookup_9. | |
APPEND 'F8' TO mt_multiplication_lookup_9. | |
APPEND 'C7' TO mt_multiplication_lookup_9. | |
APPEND 'CE' TO mt_multiplication_lookup_9. | |
APPEND 'D5' TO mt_multiplication_lookup_9. | |
APPEND 'DC' TO mt_multiplication_lookup_9. | |
APPEND '76' TO mt_multiplication_lookup_9. | |
APPEND '7F' TO mt_multiplication_lookup_9. | |
APPEND '64' TO mt_multiplication_lookup_9. | |
APPEND '6D' TO mt_multiplication_lookup_9. | |
APPEND '52' TO mt_multiplication_lookup_9. | |
APPEND '5B' TO mt_multiplication_lookup_9. | |
APPEND '40' TO mt_multiplication_lookup_9. | |
APPEND '49' TO mt_multiplication_lookup_9. | |
APPEND '3E' TO mt_multiplication_lookup_9. | |
APPEND '37' TO mt_multiplication_lookup_9. | |
APPEND '2C' TO mt_multiplication_lookup_9. | |
APPEND '25' TO mt_multiplication_lookup_9. | |
APPEND '1A' TO mt_multiplication_lookup_9. | |
APPEND '13' TO mt_multiplication_lookup_9. | |
APPEND '08' TO mt_multiplication_lookup_9. | |
APPEND '01' TO mt_multiplication_lookup_9. | |
APPEND 'E6' TO mt_multiplication_lookup_9. | |
APPEND 'EF' TO mt_multiplication_lookup_9. | |
APPEND 'F4' TO mt_multiplication_lookup_9. | |
APPEND 'FD' TO mt_multiplication_lookup_9. | |
APPEND 'C2' TO mt_multiplication_lookup_9. | |
APPEND 'CB' TO mt_multiplication_lookup_9. | |
APPEND 'D0' TO mt_multiplication_lookup_9. | |
APPEND 'D9' TO mt_multiplication_lookup_9. | |
APPEND 'AE' TO mt_multiplication_lookup_9. | |
APPEND 'A7' TO mt_multiplication_lookup_9. | |
APPEND 'BC' TO mt_multiplication_lookup_9. | |
APPEND 'B5' TO mt_multiplication_lookup_9. | |
APPEND '8A' TO mt_multiplication_lookup_9. | |
APPEND '83' TO mt_multiplication_lookup_9. | |
APPEND '98' TO mt_multiplication_lookup_9. | |
APPEND '91' TO mt_multiplication_lookup_9. | |
APPEND '4D' TO mt_multiplication_lookup_9. | |
APPEND '44' TO mt_multiplication_lookup_9. | |
APPEND '5F' TO mt_multiplication_lookup_9. | |
APPEND '56' TO mt_multiplication_lookup_9. | |
APPEND '69' TO mt_multiplication_lookup_9. | |
APPEND '60' TO mt_multiplication_lookup_9. | |
APPEND '7B' TO mt_multiplication_lookup_9. | |
APPEND '72' TO mt_multiplication_lookup_9. | |
APPEND '05' TO mt_multiplication_lookup_9. | |
APPEND '0C' TO mt_multiplication_lookup_9. | |
APPEND '17' TO mt_multiplication_lookup_9. | |
APPEND '1E' TO mt_multiplication_lookup_9. | |
APPEND '21' TO mt_multiplication_lookup_9. | |
APPEND '28' TO mt_multiplication_lookup_9. | |
APPEND '33' TO mt_multiplication_lookup_9. | |
APPEND '3A' TO mt_multiplication_lookup_9. | |
APPEND 'DD' TO mt_multiplication_lookup_9. | |
APPEND 'D4' TO mt_multiplication_lookup_9. | |
APPEND 'CF' TO mt_multiplication_lookup_9. | |
APPEND 'C6' TO mt_multiplication_lookup_9. | |
APPEND 'F9' TO mt_multiplication_lookup_9. | |
APPEND 'F0' TO mt_multiplication_lookup_9. | |
APPEND 'EB' TO mt_multiplication_lookup_9. | |
APPEND 'E2' TO mt_multiplication_lookup_9. | |
APPEND '95' TO mt_multiplication_lookup_9. | |
APPEND '9C' TO mt_multiplication_lookup_9. | |
APPEND '87' TO mt_multiplication_lookup_9. | |
APPEND '8E' TO mt_multiplication_lookup_9. | |
APPEND 'B1' TO mt_multiplication_lookup_9. | |
APPEND 'B8' TO mt_multiplication_lookup_9. | |
APPEND 'A3' TO mt_multiplication_lookup_9. | |
APPEND 'AA' TO mt_multiplication_lookup_9. | |
APPEND 'EC' TO mt_multiplication_lookup_9. | |
APPEND 'E5' TO mt_multiplication_lookup_9. | |
APPEND 'FE' TO mt_multiplication_lookup_9. | |
APPEND 'F7' TO mt_multiplication_lookup_9. | |
APPEND 'C8' TO mt_multiplication_lookup_9. | |
APPEND 'C1' TO mt_multiplication_lookup_9. | |
APPEND 'DA' TO mt_multiplication_lookup_9. | |
APPEND 'D3' TO mt_multiplication_lookup_9. | |
APPEND 'A4' TO mt_multiplication_lookup_9. | |
APPEND 'AD' TO mt_multiplication_lookup_9. | |
APPEND 'B6' TO mt_multiplication_lookup_9. | |
APPEND 'BF' TO mt_multiplication_lookup_9. | |
APPEND '80' TO mt_multiplication_lookup_9. | |
APPEND '89' TO mt_multiplication_lookup_9. | |
APPEND '92' TO mt_multiplication_lookup_9. | |
APPEND '9B' TO mt_multiplication_lookup_9. | |
APPEND '7C' TO mt_multiplication_lookup_9. | |
APPEND '75' TO mt_multiplication_lookup_9. | |
APPEND '6E' TO mt_multiplication_lookup_9. | |
APPEND '67' TO mt_multiplication_lookup_9. | |
APPEND '58' TO mt_multiplication_lookup_9. | |
APPEND '51' TO mt_multiplication_lookup_9. | |
APPEND '4A' TO mt_multiplication_lookup_9. | |
APPEND '43' TO mt_multiplication_lookup_9. | |
APPEND '34' TO mt_multiplication_lookup_9. | |
APPEND '3D' TO mt_multiplication_lookup_9. | |
APPEND '26' TO mt_multiplication_lookup_9. | |
APPEND '2F' TO mt_multiplication_lookup_9. | |
APPEND '10' TO mt_multiplication_lookup_9. | |
APPEND '19' TO mt_multiplication_lookup_9. | |
APPEND '02' TO mt_multiplication_lookup_9. | |
APPEND '0B' TO mt_multiplication_lookup_9. | |
APPEND 'D7' TO mt_multiplication_lookup_9. | |
APPEND 'DE' TO mt_multiplication_lookup_9. | |
APPEND 'C5' TO mt_multiplication_lookup_9. | |
APPEND 'CC' TO mt_multiplication_lookup_9. | |
APPEND 'F3' TO mt_multiplication_lookup_9. | |
APPEND 'FA' TO mt_multiplication_lookup_9. | |
APPEND 'E1' TO mt_multiplication_lookup_9. | |
APPEND 'E8' TO mt_multiplication_lookup_9. | |
APPEND '9F' TO mt_multiplication_lookup_9. | |
APPEND '96' TO mt_multiplication_lookup_9. | |
APPEND '8D' TO mt_multiplication_lookup_9. | |
APPEND '84' TO mt_multiplication_lookup_9. | |
APPEND 'BB' TO mt_multiplication_lookup_9. | |
APPEND 'B2' TO mt_multiplication_lookup_9. | |
APPEND 'A9' TO mt_multiplication_lookup_9. | |
APPEND 'A0' TO mt_multiplication_lookup_9. | |
APPEND '47' TO mt_multiplication_lookup_9. | |
APPEND '4E' TO mt_multiplication_lookup_9. | |
APPEND '55' TO mt_multiplication_lookup_9. | |
APPEND '5C' TO mt_multiplication_lookup_9. | |
APPEND '63' TO mt_multiplication_lookup_9. | |
APPEND '6A' TO mt_multiplication_lookup_9. | |
APPEND '71' TO mt_multiplication_lookup_9. | |
APPEND '78' TO mt_multiplication_lookup_9. | |
APPEND '0F' TO mt_multiplication_lookup_9. | |
APPEND '06' TO mt_multiplication_lookup_9. | |
APPEND '1D' TO mt_multiplication_lookup_9. | |
APPEND '14' TO mt_multiplication_lookup_9. | |
APPEND '2B' TO mt_multiplication_lookup_9. | |
APPEND '22' TO mt_multiplication_lookup_9. | |
APPEND '39' TO mt_multiplication_lookup_9. | |
APPEND '30' TO mt_multiplication_lookup_9. | |
APPEND '9A' TO mt_multiplication_lookup_9. | |
APPEND '93' TO mt_multiplication_lookup_9. | |
APPEND '88' TO mt_multiplication_lookup_9. | |
APPEND '81' TO mt_multiplication_lookup_9. | |
APPEND 'BE' TO mt_multiplication_lookup_9. | |
APPEND 'B7' TO mt_multiplication_lookup_9. | |
APPEND 'AC' TO mt_multiplication_lookup_9. | |
APPEND 'A5' TO mt_multiplication_lookup_9. | |
APPEND 'D2' TO mt_multiplication_lookup_9. | |
APPEND 'DB' TO mt_multiplication_lookup_9. | |
APPEND 'C0' TO mt_multiplication_lookup_9. | |
APPEND 'C9' TO mt_multiplication_lookup_9. | |
APPEND 'F6' TO mt_multiplication_lookup_9. | |
APPEND 'FF' TO mt_multiplication_lookup_9. | |
APPEND 'E4' TO mt_multiplication_lookup_9. | |
APPEND 'ED' TO mt_multiplication_lookup_9. | |
APPEND '0A' TO mt_multiplication_lookup_9. | |
APPEND '03' TO mt_multiplication_lookup_9. | |
APPEND '18' TO mt_multiplication_lookup_9. | |
APPEND '11' TO mt_multiplication_lookup_9. | |
APPEND '2E' TO mt_multiplication_lookup_9. | |
APPEND '27' TO mt_multiplication_lookup_9. | |
APPEND '3C' TO mt_multiplication_lookup_9. | |
APPEND '35' TO mt_multiplication_lookup_9. | |
APPEND '42' TO mt_multiplication_lookup_9. | |
APPEND '4B' TO mt_multiplication_lookup_9. | |
APPEND '50' TO mt_multiplication_lookup_9. | |
APPEND '59' TO mt_multiplication_lookup_9. | |
APPEND '66' TO mt_multiplication_lookup_9. | |
APPEND '6F' TO mt_multiplication_lookup_9. | |
APPEND '74' TO mt_multiplication_lookup_9. | |
APPEND '7D' TO mt_multiplication_lookup_9. | |
APPEND 'A1' TO mt_multiplication_lookup_9. | |
APPEND 'A8' TO mt_multiplication_lookup_9. | |
APPEND 'B3' TO mt_multiplication_lookup_9. | |
APPEND 'BA' TO mt_multiplication_lookup_9. | |
APPEND '85' TO mt_multiplication_lookup_9. | |
APPEND '8C' TO mt_multiplication_lookup_9. | |
APPEND '97' TO mt_multiplication_lookup_9. | |
APPEND '9E' TO mt_multiplication_lookup_9. | |
APPEND 'E9' TO mt_multiplication_lookup_9. | |
APPEND 'E0' TO mt_multiplication_lookup_9. | |
APPEND 'FB' TO mt_multiplication_lookup_9. | |
APPEND 'F2' TO mt_multiplication_lookup_9. | |
APPEND 'CD' TO mt_multiplication_lookup_9. | |
APPEND 'C4' TO mt_multiplication_lookup_9. | |
APPEND 'DF' TO mt_multiplication_lookup_9. | |
APPEND 'D6' TO mt_multiplication_lookup_9. | |
APPEND '31' TO mt_multiplication_lookup_9. | |
APPEND '38' TO mt_multiplication_lookup_9. | |
APPEND '23' TO mt_multiplication_lookup_9. | |
APPEND '2A' TO mt_multiplication_lookup_9. | |
APPEND '15' TO mt_multiplication_lookup_9. | |
APPEND '1C' TO mt_multiplication_lookup_9. | |
APPEND '07' TO mt_multiplication_lookup_9. | |
APPEND '0E' TO mt_multiplication_lookup_9. | |
APPEND '79' TO mt_multiplication_lookup_9. | |
APPEND '70' TO mt_multiplication_lookup_9. | |
APPEND '6B' TO mt_multiplication_lookup_9. | |
APPEND '62' TO mt_multiplication_lookup_9. | |
APPEND '5D' TO mt_multiplication_lookup_9. | |
APPEND '54' TO mt_multiplication_lookup_9. | |
APPEND '4F' TO mt_multiplication_lookup_9. | |
APPEND '46' TO mt_multiplication_lookup_9. | |
"Build Multiplication Table for 11 | |
APPEND '00' TO mt_multiplication_lookup_11. | |
APPEND '0B' TO mt_multiplication_lookup_11. | |
APPEND '16' TO mt_multiplication_lookup_11. | |
APPEND '1D' TO mt_multiplication_lookup_11. | |
APPEND '2C' TO mt_multiplication_lookup_11. | |
APPEND '27' TO mt_multiplication_lookup_11. | |
APPEND '3A' TO mt_multiplication_lookup_11. | |
APPEND '31' TO mt_multiplication_lookup_11. | |
APPEND '58' TO mt_multiplication_lookup_11. | |
APPEND '53' TO mt_multiplication_lookup_11. | |
APPEND '4E' TO mt_multiplication_lookup_11. | |
APPEND '45' TO mt_multiplication_lookup_11. | |
APPEND '74' TO mt_multiplication_lookup_11. | |
APPEND '7F' TO mt_multiplication_lookup_11. | |
APPEND '62' TO mt_multiplication_lookup_11. | |
APPEND '69' TO mt_multiplication_lookup_11. | |
APPEND 'B0' TO mt_multiplication_lookup_11. | |
APPEND 'BB' TO mt_multiplication_lookup_11. | |
APPEND 'A6' TO mt_multiplication_lookup_11. | |
APPEND 'AD' TO mt_multiplication_lookup_11. | |
APPEND '9C' TO mt_multiplication_lookup_11. | |
APPEND '97' TO mt_multiplication_lookup_11. | |
APPEND '8A' TO mt_multiplication_lookup_11. | |
APPEND '81' TO mt_multiplication_lookup_11. | |
APPEND 'E8' TO mt_multiplication_lookup_11. | |
APPEND 'E3' TO mt_multiplication_lookup_11. | |
APPEND 'FE' TO mt_multiplication_lookup_11. | |
APPEND 'F5' TO mt_multiplication_lookup_11. | |
APPEND 'C4' TO mt_multiplication_lookup_11. | |
APPEND 'CF' TO mt_multiplication_lookup_11. | |
APPEND 'D2' TO mt_multiplication_lookup_11. | |
APPEND 'D9' TO mt_multiplication_lookup_11. | |
APPEND '7B' TO mt_multiplication_lookup_11. | |
APPEND '70' TO mt_multiplication_lookup_11. | |
APPEND '6D' TO mt_multiplication_lookup_11. | |
APPEND '66' TO mt_multiplication_lookup_11. | |
APPEND '57' TO mt_multiplication_lookup_11. | |
APPEND '5C' TO mt_multiplication_lookup_11. | |
APPEND '41' TO mt_multiplication_lookup_11. | |
APPEND '4A' TO mt_multiplication_lookup_11. | |
APPEND '23' TO mt_multiplication_lookup_11. | |
APPEND '28' TO mt_multiplication_lookup_11. | |
APPEND '35' TO mt_multiplication_lookup_11. | |
APPEND '3E' TO mt_multiplication_lookup_11. | |
APPEND '0F' TO mt_multiplication_lookup_11. | |
APPEND '04' TO mt_multiplication_lookup_11. | |
APPEND '19' TO mt_multiplication_lookup_11. | |
APPEND '12' TO mt_multiplication_lookup_11. | |
APPEND 'CB' TO mt_multiplication_lookup_11. | |
APPEND 'C0' TO mt_multiplication_lookup_11. | |
APPEND 'DD' TO mt_multiplication_lookup_11. | |
APPEND 'D6' TO mt_multiplication_lookup_11. | |
APPEND 'E7' TO mt_multiplication_lookup_11. | |
APPEND 'EC' TO mt_multiplication_lookup_11. | |
APPEND 'F1' TO mt_multiplication_lookup_11. | |
APPEND 'FA' TO mt_multiplication_lookup_11. | |
APPEND '93' TO mt_multiplication_lookup_11. | |
APPEND '98' TO mt_multiplication_lookup_11. | |
APPEND '85' TO mt_multiplication_lookup_11. | |
APPEND '8E' TO mt_multiplication_lookup_11. | |
APPEND 'BF' TO mt_multiplication_lookup_11. | |
APPEND 'B4' TO mt_multiplication_lookup_11. | |
APPEND 'A9' TO mt_multiplication_lookup_11. | |
APPEND 'A2' TO mt_multiplication_lookup_11. | |
APPEND 'F6' TO mt_multiplication_lookup_11. | |
APPEND 'FD' TO mt_multiplication_lookup_11. | |
APPEND 'E0' TO mt_multiplication_lookup_11. | |
APPEND 'EB' TO mt_multiplication_lookup_11. | |
APPEND 'DA' TO mt_multiplication_lookup_11. | |
APPEND 'D1' TO mt_multiplication_lookup_11. | |
APPEND 'CC' TO mt_multiplication_lookup_11. | |
APPEND 'C7' TO mt_multiplication_lookup_11. | |
APPEND 'AE' TO mt_multiplication_lookup_11. | |
APPEND 'A5' TO mt_multiplication_lookup_11. | |
APPEND 'B8' TO mt_multiplication_lookup_11. | |
APPEND 'B3' TO mt_multiplication_lookup_11. | |
APPEND '82' TO mt_multiplication_lookup_11. | |
APPEND '89' TO mt_multiplication_lookup_11. | |
APPEND '94' TO mt_multiplication_lookup_11. | |
APPEND '9F' TO mt_multiplication_lookup_11. | |
APPEND '46' TO mt_multiplication_lookup_11. | |
APPEND '4D' TO mt_multiplication_lookup_11. | |
APPEND '50' TO mt_multiplication_lookup_11. | |
APPEND '5B' TO mt_multiplication_lookup_11. | |
APPEND '6A' TO mt_multiplication_lookup_11. | |
APPEND '61' TO mt_multiplication_lookup_11. | |
APPEND '7C' TO mt_multiplication_lookup_11. | |
APPEND '77' TO mt_multiplication_lookup_11. | |
APPEND '1E' TO mt_multiplication_lookup_11. | |
APPEND '15' TO mt_multiplication_lookup_11. | |
APPEND '08' TO mt_multiplication_lookup_11. | |
APPEND '03' TO mt_multiplication_lookup_11. | |
APPEND '32' TO mt_multiplication_lookup_11. | |
APPEND '39' TO mt_multiplication_lookup_11. | |
APPEND '24' TO mt_multiplication_lookup_11. | |
APPEND '2F' TO mt_multiplication_lookup_11. | |
APPEND '8D' TO mt_multiplication_lookup_11. | |
APPEND '86' TO mt_multiplication_lookup_11. | |
APPEND '9B' TO mt_multiplication_lookup_11. | |
APPEND '90' TO mt_multiplication_lookup_11. | |
APPEND 'A1' TO mt_multiplication_lookup_11. | |
APPEND 'AA' TO mt_multiplication_lookup_11. | |
APPEND 'B7' TO mt_multiplication_lookup_11. | |
APPEND 'BC' TO mt_multiplication_lookup_11. | |
APPEND 'D5' TO mt_multiplication_lookup_11. | |
APPEND 'DE' TO mt_multiplication_lookup_11. | |
APPEND 'C3' TO mt_multiplication_lookup_11. | |
APPEND 'C8' TO mt_multiplication_lookup_11. | |
APPEND 'F9' TO mt_multiplication_lookup_11. | |
APPEND 'F2' TO mt_multiplication_lookup_11. | |
APPEND 'EF' TO mt_multiplication_lookup_11. | |
APPEND 'E4' TO mt_multiplication_lookup_11. | |
APPEND '3D' TO mt_multiplication_lookup_11. | |
APPEND '36' TO mt_multiplication_lookup_11. | |
APPEND '2B' TO mt_multiplication_lookup_11. | |
APPEND '20' TO mt_multiplication_lookup_11. | |
APPEND '11' TO mt_multiplication_lookup_11. | |
APPEND '1A' TO mt_multiplication_lookup_11. | |
APPEND '07' TO mt_multiplication_lookup_11. | |
APPEND '0C' TO mt_multiplication_lookup_11. | |
APPEND '65' TO mt_multiplication_lookup_11. | |
APPEND '6E' TO mt_multiplication_lookup_11. | |
APPEND '73' TO mt_multiplication_lookup_11. | |
APPEND '78' TO mt_multiplication_lookup_11. | |
APPEND '49' TO mt_multiplication_lookup_11. | |
APPEND '42' TO mt_multiplication_lookup_11. | |
APPEND '5F' TO mt_multiplication_lookup_11. | |
APPEND '54' TO mt_multiplication_lookup_11. | |
APPEND 'F7' TO mt_multiplication_lookup_11. | |
APPEND 'FC' TO mt_multiplication_lookup_11. | |
APPEND 'E1' TO mt_multiplication_lookup_11. | |
APPEND 'EA' TO mt_multiplication_lookup_11. | |
APPEND 'DB' TO mt_multiplication_lookup_11. | |
APPEND 'D0' TO mt_multiplication_lookup_11. | |
APPEND 'CD' TO mt_multiplication_lookup_11. | |
APPEND 'C6' TO mt_multiplication_lookup_11. | |
APPEND 'AF' TO mt_multiplication_lookup_11. | |
APPEND 'A4' TO mt_multiplication_lookup_11. | |
APPEND 'B9' TO mt_multiplication_lookup_11. | |
APPEND 'B2' TO mt_multiplication_lookup_11. | |
APPEND '83' TO mt_multiplication_lookup_11. | |
APPEND '88' TO mt_multiplication_lookup_11. | |
APPEND '95' TO mt_multiplication_lookup_11. | |
APPEND '9E' TO mt_multiplication_lookup_11. | |
APPEND '47' TO mt_multiplication_lookup_11. | |
APPEND '4C' TO mt_multiplication_lookup_11. | |
APPEND '51' TO mt_multiplication_lookup_11. | |
APPEND '5A' TO mt_multiplication_lookup_11. | |
APPEND '6B' TO mt_multiplication_lookup_11. | |
APPEND '60' TO mt_multiplication_lookup_11. | |
APPEND '7D' TO mt_multiplication_lookup_11. | |
APPEND '76' TO mt_multiplication_lookup_11. | |
APPEND '1F' TO mt_multiplication_lookup_11. | |
APPEND '14' TO mt_multiplication_lookup_11. | |
APPEND '09' TO mt_multiplication_lookup_11. | |
APPEND '02' TO mt_multiplication_lookup_11. | |
APPEND '33' TO mt_multiplication_lookup_11. | |
APPEND '38' TO mt_multiplication_lookup_11. | |
APPEND '25' TO mt_multiplication_lookup_11. | |
APPEND '2E' TO mt_multiplication_lookup_11. | |
APPEND '8C' TO mt_multiplication_lookup_11. | |
APPEND '87' TO mt_multiplication_lookup_11. | |
APPEND '9A' TO mt_multiplication_lookup_11. | |
APPEND '91' TO mt_multiplication_lookup_11. | |
APPEND 'A0' TO mt_multiplication_lookup_11. | |
APPEND 'AB' TO mt_multiplication_lookup_11. | |
APPEND 'B6' TO mt_multiplication_lookup_11. | |
APPEND 'BD' TO mt_multiplication_lookup_11. | |
APPEND 'D4' TO mt_multiplication_lookup_11. | |
APPEND 'DF' TO mt_multiplication_lookup_11. | |
APPEND 'C2' TO mt_multiplication_lookup_11. | |
APPEND 'C9' TO mt_multiplication_lookup_11. | |
APPEND 'F8' TO mt_multiplication_lookup_11. | |
APPEND 'F3' TO mt_multiplication_lookup_11. | |
APPEND 'EE' TO mt_multiplication_lookup_11. | |
APPEND 'E5' TO mt_multiplication_lookup_11. | |
APPEND '3C' TO mt_multiplication_lookup_11. | |
APPEND '37' TO mt_multiplication_lookup_11. | |
APPEND '2A' TO mt_multiplication_lookup_11. | |
APPEND '21' TO mt_multiplication_lookup_11. | |
APPEND '10' TO mt_multiplication_lookup_11. | |
APPEND '1B' TO mt_multiplication_lookup_11. | |
APPEND '06' TO mt_multiplication_lookup_11. | |
APPEND '0D' TO mt_multiplication_lookup_11. | |
APPEND '64' TO mt_multiplication_lookup_11. | |
APPEND '6F' TO mt_multiplication_lookup_11. | |
APPEND '72' TO mt_multiplication_lookup_11. | |
APPEND '79' TO mt_multiplication_lookup_11. | |
APPEND '48' TO mt_multiplication_lookup_11. | |
APPEND '43' TO mt_multiplication_lookup_11. | |
APPEND '5E' TO mt_multiplication_lookup_11. | |
APPEND '55' TO mt_multiplication_lookup_11. | |
APPEND '01' TO mt_multiplication_lookup_11. | |
APPEND '0A' TO mt_multiplication_lookup_11. | |
APPEND '17' TO mt_multiplication_lookup_11. | |
APPEND '1C' TO mt_multiplication_lookup_11. | |
APPEND '2D' TO mt_multiplication_lookup_11. | |
APPEND '26' TO mt_multiplication_lookup_11. | |
APPEND '3B' TO mt_multiplication_lookup_11. | |
APPEND '30' TO mt_multiplication_lookup_11. | |
APPEND '59' TO mt_multiplication_lookup_11. | |
APPEND '52' TO mt_multiplication_lookup_11. | |
APPEND '4F' TO mt_multiplication_lookup_11. | |
APPEND '44' TO mt_multiplication_lookup_11. | |
APPEND '75' TO mt_multiplication_lookup_11. | |
APPEND '7E' TO mt_multiplication_lookup_11. | |
APPEND '63' TO mt_multiplication_lookup_11. | |
APPEND '68' TO mt_multiplication_lookup_11. | |
APPEND 'B1' TO mt_multiplication_lookup_11. | |
APPEND 'BA' TO mt_multiplication_lookup_11. | |
APPEND 'A7' TO mt_multiplication_lookup_11. | |
APPEND 'AC' TO mt_multiplication_lookup_11. | |
APPEND '9D' TO mt_multiplication_lookup_11. | |
APPEND '96' TO mt_multiplication_lookup_11. | |
APPEND '8B' TO mt_multiplication_lookup_11. | |
APPEND '80' TO mt_multiplication_lookup_11. | |
APPEND 'E9' TO mt_multiplication_lookup_11. | |
APPEND 'E2' TO mt_multiplication_lookup_11. | |
APPEND 'FF' TO mt_multiplication_lookup_11. | |
APPEND 'F4' TO mt_multiplication_lookup_11. | |
APPEND 'C5' TO mt_multiplication_lookup_11. | |
APPEND 'CE' TO mt_multiplication_lookup_11. | |
APPEND 'D3' TO mt_multiplication_lookup_11. | |
APPEND 'D8' TO mt_multiplication_lookup_11. | |
APPEND '7A' TO mt_multiplication_lookup_11. | |
APPEND '71' TO mt_multiplication_lookup_11. | |
APPEND '6C' TO mt_multiplication_lookup_11. | |
APPEND '67' TO mt_multiplication_lookup_11. | |
APPEND '56' TO mt_multiplication_lookup_11. | |
APPEND '5D' TO mt_multiplication_lookup_11. | |
APPEND '40' TO mt_multiplication_lookup_11. | |
APPEND '4B' TO mt_multiplication_lookup_11. | |
APPEND '22' TO mt_multiplication_lookup_11. | |
APPEND '29' TO mt_multiplication_lookup_11. | |
APPEND '34' TO mt_multiplication_lookup_11. | |
APPEND '3F' TO mt_multiplication_lookup_11. | |
APPEND '0E' TO mt_multiplication_lookup_11. | |
APPEND '05' TO mt_multiplication_lookup_11. | |
APPEND '18' TO mt_multiplication_lookup_11. | |
APPEND '13' TO mt_multiplication_lookup_11. | |
APPEND 'CA' TO mt_multiplication_lookup_11. | |
APPEND 'C1' TO mt_multiplication_lookup_11. | |
APPEND 'DC' TO mt_multiplication_lookup_11. | |
APPEND 'D7' TO mt_multiplication_lookup_11. | |
APPEND 'E6' TO mt_multiplication_lookup_11. | |
APPEND 'ED' TO mt_multiplication_lookup_11. | |
APPEND 'F0' TO mt_multiplication_lookup_11. | |
APPEND 'FB' TO mt_multiplication_lookup_11. | |
APPEND '92' TO mt_multiplication_lookup_11. | |
APPEND '99' TO mt_multiplication_lookup_11. | |
APPEND '84' TO mt_multiplication_lookup_11. | |
APPEND '8F' TO mt_multiplication_lookup_11. | |
APPEND 'BE' TO mt_multiplication_lookup_11. | |
APPEND 'B5' TO mt_multiplication_lookup_11. | |
APPEND 'A8' TO mt_multiplication_lookup_11. | |
APPEND 'A3' TO mt_multiplication_lookup_11. | |
"Build Multiplication Table for 13 | |
APPEND '00' TO mt_multiplication_lookup_13. | |
APPEND '0D' TO mt_multiplication_lookup_13. | |
APPEND '1A' TO mt_multiplication_lookup_13. | |
APPEND '17' TO mt_multiplication_lookup_13. | |
APPEND '34' TO mt_multiplication_lookup_13. | |
APPEND '39' TO mt_multiplication_lookup_13. | |
APPEND '2E' TO mt_multiplication_lookup_13. | |
APPEND '23' TO mt_multiplication_lookup_13. | |
APPEND '68' TO mt_multiplication_lookup_13. | |
APPEND '65' TO mt_multiplication_lookup_13. | |
APPEND '72' TO mt_multiplication_lookup_13. | |
APPEND '7F' TO mt_multiplication_lookup_13. | |
APPEND '5C' TO mt_multiplication_lookup_13. | |
APPEND '51' TO mt_multiplication_lookup_13. | |
APPEND '46' TO mt_multiplication_lookup_13. | |
APPEND '4B' TO mt_multiplication_lookup_13. | |
APPEND 'D0' TO mt_multiplication_lookup_13. | |
APPEND 'DD' TO mt_multiplication_lookup_13. | |
APPEND 'CA' TO mt_multiplication_lookup_13. | |
APPEND 'C7' TO mt_multiplication_lookup_13. | |
APPEND 'E4' TO mt_multiplication_lookup_13. | |
APPEND 'E9' TO mt_multiplication_lookup_13. | |
APPEND 'FE' TO mt_multiplication_lookup_13. | |
APPEND 'F3' TO mt_multiplication_lookup_13. | |
APPEND 'B8' TO mt_multiplication_lookup_13. | |
APPEND 'B5' TO mt_multiplication_lookup_13. | |
APPEND 'A2' TO mt_multiplication_lookup_13. | |
APPEND 'AF' TO mt_multiplication_lookup_13. | |
APPEND '8C' TO mt_multiplication_lookup_13. | |
APPEND '81' TO mt_multiplication_lookup_13. | |
APPEND '96' TO mt_multiplication_lookup_13. | |
APPEND '9B' TO mt_multiplication_lookup_13. | |
APPEND 'BB' TO mt_multiplication_lookup_13. | |
APPEND 'B6' TO mt_multiplication_lookup_13. | |
APPEND 'A1' TO mt_multiplication_lookup_13. | |
APPEND 'AC' TO mt_multiplication_lookup_13. | |
APPEND '8F' TO mt_multiplication_lookup_13. | |
APPEND '82' TO mt_multiplication_lookup_13. | |
APPEND '95' TO mt_multiplication_lookup_13. | |
APPEND '98' TO mt_multiplication_lookup_13. | |
APPEND 'D3' TO mt_multiplication_lookup_13. | |
APPEND 'DE' TO mt_multiplication_lookup_13. | |
APPEND 'C9' TO mt_multiplication_lookup_13. | |
APPEND 'C4' TO mt_multiplication_lookup_13. | |
APPEND 'E7' TO mt_multiplication_lookup_13. | |
APPEND 'EA' TO mt_multiplication_lookup_13. | |
APPEND 'FD' TO mt_multiplication_lookup_13. | |
APPEND 'F0' TO mt_multiplication_lookup_13. | |
APPEND '6B' TO mt_multiplication_lookup_13. | |
APPEND '66' TO mt_multiplication_lookup_13. | |
APPEND '71' TO mt_multiplication_lookup_13. | |
APPEND '7C' TO mt_multiplication_lookup_13. | |
APPEND '5F' TO mt_multiplication_lookup_13. | |
APPEND '52' TO mt_multiplication_lookup_13. | |
APPEND '45' TO mt_multiplication_lookup_13. | |
APPEND '48' TO mt_multiplication_lookup_13. | |
APPEND '03' TO mt_multiplication_lookup_13. | |
APPEND '0E' TO mt_multiplication_lookup_13. | |
APPEND '19' TO mt_multiplication_lookup_13. | |
APPEND '14' TO mt_multiplication_lookup_13. | |
APPEND '37' TO mt_multiplication_lookup_13. | |
APPEND '3A' TO mt_multiplication_lookup_13. | |
APPEND '2D' TO mt_multiplication_lookup_13. | |
APPEND '20' TO mt_multiplication_lookup_13. | |
APPEND '6D' TO mt_multiplication_lookup_13. | |
APPEND '60' TO mt_multiplication_lookup_13. | |
APPEND '77' TO mt_multiplication_lookup_13. | |
APPEND '7A' TO mt_multiplication_lookup_13. | |
APPEND '59' TO mt_multiplication_lookup_13. | |
APPEND '54' TO mt_multiplication_lookup_13. | |
APPEND '43' TO mt_multiplication_lookup_13. | |
APPEND '4E' TO mt_multiplication_lookup_13. | |
APPEND '05' TO mt_multiplication_lookup_13. | |
APPEND '08' TO mt_multiplication_lookup_13. | |
APPEND '1F' TO mt_multiplication_lookup_13. | |
APPEND '12' TO mt_multiplication_lookup_13. | |
APPEND '31' TO mt_multiplication_lookup_13. | |
APPEND '3C' TO mt_multiplication_lookup_13. | |
APPEND '2B' TO mt_multiplication_lookup_13. | |
APPEND '26' TO mt_multiplication_lookup_13. | |
APPEND 'BD' TO mt_multiplication_lookup_13. | |
APPEND 'B0' TO mt_multiplication_lookup_13. | |
APPEND 'A7' TO mt_multiplication_lookup_13. | |
APPEND 'AA' TO mt_multiplication_lookup_13. | |
APPEND '89' TO mt_multiplication_lookup_13. | |
APPEND '84' TO mt_multiplication_lookup_13. | |
APPEND '93' TO mt_multiplication_lookup_13. | |
APPEND '9E' TO mt_multiplication_lookup_13. | |
APPEND 'D5' TO mt_multiplication_lookup_13. | |
APPEND 'D8' TO mt_multiplication_lookup_13. | |
APPEND 'CF' TO mt_multiplication_lookup_13. | |
APPEND 'C2' TO mt_multiplication_lookup_13. | |
APPEND 'E1' TO mt_multiplication_lookup_13. | |
APPEND 'EC' TO mt_multiplication_lookup_13. | |
APPEND 'FB' TO mt_multiplication_lookup_13. | |
APPEND 'F6' TO mt_multiplication_lookup_13. | |
APPEND 'D6' TO mt_multiplication_lookup_13. | |
APPEND 'DB' TO mt_multiplication_lookup_13. | |
APPEND 'CC' TO mt_multiplication_lookup_13. | |
APPEND 'C1' TO mt_multiplication_lookup_13. | |
APPEND 'E2' TO mt_multiplication_lookup_13. | |
APPEND 'EF' TO mt_multiplication_lookup_13. | |
APPEND 'F8' TO mt_multiplication_lookup_13. | |
APPEND 'F5' TO mt_multiplication_lookup_13. | |
APPEND 'BE' TO mt_multiplication_lookup_13. | |
APPEND 'B3' TO mt_multiplication_lookup_13. | |
APPEND 'A4' TO mt_multiplication_lookup_13. | |
APPEND 'A9' TO mt_multiplication_lookup_13. | |
APPEND '8A' TO mt_multiplication_lookup_13. | |
APPEND '87' TO mt_multiplication_lookup_13. | |
APPEND '90' TO mt_multiplication_lookup_13. | |
APPEND '9D' TO mt_multiplication_lookup_13. | |
APPEND '06' TO mt_multiplication_lookup_13. | |
APPEND '0B' TO mt_multiplication_lookup_13. | |
APPEND '1C' TO mt_multiplication_lookup_13. | |
APPEND '11' TO mt_multiplication_lookup_13. | |
APPEND '32' TO mt_multiplication_lookup_13. | |
APPEND '3F' TO mt_multiplication_lookup_13. | |
APPEND '28' TO mt_multiplication_lookup_13. | |
APPEND '25' TO mt_multiplication_lookup_13. | |
APPEND '6E' TO mt_multiplication_lookup_13. | |
APPEND '63' TO mt_multiplication_lookup_13. | |
APPEND '74' TO mt_multiplication_lookup_13. | |
APPEND '79' TO mt_multiplication_lookup_13. | |
APPEND '5A' TO mt_multiplication_lookup_13. | |
APPEND '57' TO mt_multiplication_lookup_13. | |
APPEND '40' TO mt_multiplication_lookup_13. | |
APPEND '4D' TO mt_multiplication_lookup_13. | |
APPEND 'DA' TO mt_multiplication_lookup_13. | |
APPEND 'D7' TO mt_multiplication_lookup_13. | |
APPEND 'C0' TO mt_multiplication_lookup_13. | |
APPEND 'CD' TO mt_multiplication_lookup_13. | |
APPEND 'EE' TO mt_multiplication_lookup_13. | |
APPEND 'E3' TO mt_multiplication_lookup_13. | |
APPEND 'F4' TO mt_multiplication_lookup_13. | |
APPEND 'F9' TO mt_multiplication_lookup_13. | |
APPEND 'B2' TO mt_multiplication_lookup_13. | |
APPEND 'BF' TO mt_multiplication_lookup_13. | |
APPEND 'A8' TO mt_multiplication_lookup_13. | |
APPEND 'A5' TO mt_multiplication_lookup_13. | |
APPEND '86' TO mt_multiplication_lookup_13. | |
APPEND '8B' TO mt_multiplication_lookup_13. | |
APPEND '9C' TO mt_multiplication_lookup_13. | |
APPEND '91' TO mt_multiplication_lookup_13. | |
APPEND '0A' TO mt_multiplication_lookup_13. | |
APPEND '07' TO mt_multiplication_lookup_13. | |
APPEND '10' TO mt_multiplication_lookup_13. | |
APPEND '1D' TO mt_multiplication_lookup_13. | |
APPEND '3E' TO mt_multiplication_lookup_13. | |
APPEND '33' TO mt_multiplication_lookup_13. | |
APPEND '24' TO mt_multiplication_lookup_13. | |
APPEND '29' TO mt_multiplication_lookup_13. | |
APPEND '62' TO mt_multiplication_lookup_13. | |
APPEND '6F' TO mt_multiplication_lookup_13. | |
APPEND '78' TO mt_multiplication_lookup_13. | |
APPEND '75' TO mt_multiplication_lookup_13. | |
APPEND '56' TO mt_multiplication_lookup_13. | |
APPEND '5B' TO mt_multiplication_lookup_13. | |
APPEND '4C' TO mt_multiplication_lookup_13. | |
APPEND '41' TO mt_multiplication_lookup_13. | |
APPEND '61' TO mt_multiplication_lookup_13. | |
APPEND '6C' TO mt_multiplication_lookup_13. | |
APPEND '7B' TO mt_multiplication_lookup_13. | |
APPEND '76' TO mt_multiplication_lookup_13. | |
APPEND '55' TO mt_multiplication_lookup_13. | |
APPEND '58' TO mt_multiplication_lookup_13. | |
APPEND '4F' TO mt_multiplication_lookup_13. | |
APPEND '42' TO mt_multiplication_lookup_13. | |
APPEND '09' TO mt_multiplication_lookup_13. | |
APPEND '04' TO mt_multiplication_lookup_13. | |
APPEND '13' TO mt_multiplication_lookup_13. | |
APPEND '1E' TO mt_multiplication_lookup_13. | |
APPEND '3D' TO mt_multiplication_lookup_13. | |
APPEND '30' TO mt_multiplication_lookup_13. | |
APPEND '27' TO mt_multiplication_lookup_13. | |
APPEND '2A' TO mt_multiplication_lookup_13. | |
APPEND 'B1' TO mt_multiplication_lookup_13. | |
APPEND 'BC' TO mt_multiplication_lookup_13. | |
APPEND 'AB' TO mt_multiplication_lookup_13. | |
APPEND 'A6' TO mt_multiplication_lookup_13. | |
APPEND '85' TO mt_multiplication_lookup_13. | |
APPEND '88' TO mt_multiplication_lookup_13. | |
APPEND '9F' TO mt_multiplication_lookup_13. | |
APPEND '92' TO mt_multiplication_lookup_13. | |
APPEND 'D9' TO mt_multiplication_lookup_13. | |
APPEND 'D4' TO mt_multiplication_lookup_13. | |
APPEND 'C3' TO mt_multiplication_lookup_13. | |
APPEND 'CE' TO mt_multiplication_lookup_13. | |
APPEND 'ED' TO mt_multiplication_lookup_13. | |
APPEND 'E0' TO mt_multiplication_lookup_13. | |
APPEND 'F7' TO mt_multiplication_lookup_13. | |
APPEND 'FA' TO mt_multiplication_lookup_13. | |
APPEND 'B7' TO mt_multiplication_lookup_13. | |
APPEND 'BA' TO mt_multiplication_lookup_13. | |
APPEND 'AD' TO mt_multiplication_lookup_13. | |
APPEND 'A0' TO mt_multiplication_lookup_13. | |
APPEND '83' TO mt_multiplication_lookup_13. | |
APPEND '8E' TO mt_multiplication_lookup_13. | |
APPEND '99' TO mt_multiplication_lookup_13. | |
APPEND '94' TO mt_multiplication_lookup_13. | |
APPEND 'DF' TO mt_multiplication_lookup_13. | |
APPEND 'D2' TO mt_multiplication_lookup_13. | |
APPEND 'C5' TO mt_multiplication_lookup_13. | |
APPEND 'C8' TO mt_multiplication_lookup_13. | |
APPEND 'EB' TO mt_multiplication_lookup_13. | |
APPEND 'E6' TO mt_multiplication_lookup_13. | |
APPEND 'F1' TO mt_multiplication_lookup_13. | |
APPEND 'FC' TO mt_multiplication_lookup_13. | |
APPEND '67' TO mt_multiplication_lookup_13. | |
APPEND '6A' TO mt_multiplication_lookup_13. | |
APPEND '7D' TO mt_multiplication_lookup_13. | |
APPEND '70' TO mt_multiplication_lookup_13. | |
APPEND '53' TO mt_multiplication_lookup_13. | |
APPEND '5E' TO mt_multiplication_lookup_13. | |
APPEND '49' TO mt_multiplication_lookup_13. | |
APPEND '44' TO mt_multiplication_lookup_13. | |
APPEND '0F' TO mt_multiplication_lookup_13. | |
APPEND '02' TO mt_multiplication_lookup_13. | |
APPEND '15' TO mt_multiplication_lookup_13. | |
APPEND '18' TO mt_multiplication_lookup_13. | |
APPEND '3B' TO mt_multiplication_lookup_13. | |
APPEND '36' TO mt_multiplication_lookup_13. | |
APPEND '21' TO mt_multiplication_lookup_13. | |
APPEND '2C' TO mt_multiplication_lookup_13. | |
APPEND '0C' TO mt_multiplication_lookup_13. | |
APPEND '01' TO mt_multiplication_lookup_13. | |
APPEND '16' TO mt_multiplication_lookup_13. | |
APPEND '1B' TO mt_multiplication_lookup_13. | |
APPEND '38' TO mt_multiplication_lookup_13. | |
APPEND '35' TO mt_multiplication_lookup_13. | |
APPEND '22' TO mt_multiplication_lookup_13. | |
APPEND '2F' TO mt_multiplication_lookup_13. | |
APPEND '64' TO mt_multiplication_lookup_13. | |
APPEND '69' TO mt_multiplication_lookup_13. | |
APPEND '7E' TO mt_multiplication_lookup_13. | |
APPEND '73' TO mt_multiplication_lookup_13. | |
APPEND '50' TO mt_multiplication_lookup_13. | |
APPEND '5D' TO mt_multiplication_lookup_13. | |
APPEND '4A' TO mt_multiplication_lookup_13. | |
APPEND '47' TO mt_multiplication_lookup_13. | |
APPEND 'DC' TO mt_multiplication_lookup_13. | |
APPEND 'D1' TO mt_multiplication_lookup_13. | |
APPEND 'C6' TO mt_multiplication_lookup_13. | |
APPEND 'CB' TO mt_multiplication_lookup_13. | |
APPEND 'E8' TO mt_multiplication_lookup_13. | |
APPEND 'E5' TO mt_multiplication_lookup_13. | |
APPEND 'F2' TO mt_multiplication_lookup_13. | |
APPEND 'FF' TO mt_multiplication_lookup_13. | |
APPEND 'B4' TO mt_multiplication_lookup_13. | |
APPEND 'B9' TO mt_multiplication_lookup_13. | |
APPEND 'AE' TO mt_multiplication_lookup_13. | |
APPEND 'A3' TO mt_multiplication_lookup_13. | |
APPEND '80' TO mt_multiplication_lookup_13. | |
APPEND '8D' TO mt_multiplication_lookup_13. | |
APPEND '9A' TO mt_multiplication_lookup_13. | |
APPEND '97' TO mt_multiplication_lookup_13. | |
"Build Multiplication Table for 14 | |
APPEND '00' TO mt_multiplication_lookup_14. | |
APPEND '0E' TO mt_multiplication_lookup_14. | |
APPEND '1C' TO mt_multiplication_lookup_14. | |
APPEND '12' TO mt_multiplication_lookup_14. | |
APPEND '38' TO mt_multiplication_lookup_14. | |
APPEND '36' TO mt_multiplication_lookup_14. | |
APPEND '24' TO mt_multiplication_lookup_14. | |
APPEND '2A' TO mt_multiplication_lookup_14. | |
APPEND '70' TO mt_multiplication_lookup_14. | |
APPEND '7E' TO mt_multiplication_lookup_14. | |
APPEND '6C' TO mt_multiplication_lookup_14. | |
APPEND '62' TO mt_multiplication_lookup_14. | |
APPEND '48' TO mt_multiplication_lookup_14. | |
APPEND '46' TO mt_multiplication_lookup_14. | |
APPEND '54' TO mt_multiplication_lookup_14. | |
APPEND '5A' TO mt_multiplication_lookup_14. | |
APPEND 'E0' TO mt_multiplication_lookup_14. | |
APPEND 'EE' TO mt_multiplication_lookup_14. | |
APPEND 'FC' TO mt_multiplication_lookup_14. | |
APPEND 'F2' TO mt_multiplication_lookup_14. | |
APPEND 'D8' TO mt_multiplication_lookup_14. | |
APPEND 'D6' TO mt_multiplication_lookup_14. | |
APPEND 'C4' TO mt_multiplication_lookup_14. | |
APPEND 'CA' TO mt_multiplication_lookup_14. | |
APPEND '90' TO mt_multiplication_lookup_14. | |
APPEND '9E' TO mt_multiplication_lookup_14. | |
APPEND '8C' TO mt_multiplication_lookup_14. | |
APPEND '82' TO mt_multiplication_lookup_14. | |
APPEND 'A8' TO mt_multiplication_lookup_14. | |
APPEND 'A6' TO mt_multiplication_lookup_14. | |
APPEND 'B4' TO mt_multiplication_lookup_14. | |
APPEND 'BA' TO mt_multiplication_lookup_14. | |
APPEND 'DB' TO mt_multiplication_lookup_14. | |
APPEND 'D5' TO mt_multiplication_lookup_14. | |
APPEND 'C7' TO mt_multiplication_lookup_14. | |
APPEND 'C9' TO mt_multiplication_lookup_14. | |
APPEND 'E3' TO mt_multiplication_lookup_14. | |
APPEND 'ED' TO mt_multiplication_lookup_14. | |
APPEND 'FF' TO mt_multiplication_lookup_14. | |
APPEND 'F1' TO mt_multiplication_lookup_14. | |
APPEND 'AB' TO mt_multiplication_lookup_14. | |
APPEND 'A5' TO mt_multiplication_lookup_14. | |
APPEND 'B7' TO mt_multiplication_lookup_14. | |
APPEND 'B9' TO mt_multiplication_lookup_14. | |
APPEND '93' TO mt_multiplication_lookup_14. | |
APPEND '9D' TO mt_multiplication_lookup_14. | |
APPEND '8F' TO mt_multiplication_lookup_14. | |
APPEND '81' TO mt_multiplication_lookup_14. | |
APPEND '3B' TO mt_multiplication_lookup_14. | |
APPEND '35' TO mt_multiplication_lookup_14. | |
APPEND '27' TO mt_multiplication_lookup_14. | |
APPEND '29' TO mt_multiplication_lookup_14. | |
APPEND '03' TO mt_multiplication_lookup_14. | |
APPEND '0D' TO mt_multiplication_lookup_14. | |
APPEND '1F' TO mt_multiplication_lookup_14. | |
APPEND '11' TO mt_multiplication_lookup_14. | |
APPEND '4B' TO mt_multiplication_lookup_14. | |
APPEND '45' TO mt_multiplication_lookup_14. | |
APPEND '57' TO mt_multiplication_lookup_14. | |
APPEND '59' TO mt_multiplication_lookup_14. | |
APPEND '73' TO mt_multiplication_lookup_14. | |
APPEND '7D' TO mt_multiplication_lookup_14. | |
APPEND '6F' TO mt_multiplication_lookup_14. | |
APPEND '61' TO mt_multiplication_lookup_14. | |
APPEND 'AD' TO mt_multiplication_lookup_14. | |
APPEND 'A3' TO mt_multiplication_lookup_14. | |
APPEND 'B1' TO mt_multiplication_lookup_14. | |
APPEND 'BF' TO mt_multiplication_lookup_14. | |
APPEND '95' TO mt_multiplication_lookup_14. | |
APPEND '9B' TO mt_multiplication_lookup_14. | |
APPEND '89' TO mt_multiplication_lookup_14. | |
APPEND '87' TO mt_multiplication_lookup_14. | |
APPEND 'DD' TO mt_multiplication_lookup_14. | |
APPEND 'D3' TO mt_multiplication_lookup_14. | |
APPEND 'C1' TO mt_multiplication_lookup_14. | |
APPEND 'CF' TO mt_multiplication_lookup_14. | |
APPEND 'E5' TO mt_multiplication_lookup_14. | |
APPEND 'EB' TO mt_multiplication_lookup_14. | |
APPEND 'F9' TO mt_multiplication_lookup_14. | |
APPEND 'F7' TO mt_multiplication_lookup_14. | |
APPEND '4D' TO mt_multiplication_lookup_14. | |
APPEND '43' TO mt_multiplication_lookup_14. | |
APPEND '51' TO mt_multiplication_lookup_14. | |
APPEND '5F' TO mt_multiplication_lookup_14. | |
APPEND '75' TO mt_multiplication_lookup_14. | |
APPEND '7B' TO mt_multiplication_lookup_14. | |
APPEND '69' TO mt_multiplication_lookup_14. | |
APPEND '67' TO mt_multiplication_lookup_14. | |
APPEND '3D' TO mt_multiplication_lookup_14. | |
APPEND '33' TO mt_multiplication_lookup_14. | |
APPEND '21' TO mt_multiplication_lookup_14. | |
APPEND '2F' TO mt_multiplication_lookup_14. | |
APPEND '05' TO mt_multiplication_lookup_14. | |
APPEND '0B' TO mt_multiplication_lookup_14. | |
APPEND '19' TO mt_multiplication_lookup_14. | |
APPEND '17' TO mt_multiplication_lookup_14. | |
APPEND '76' TO mt_multiplication_lookup_14. | |
APPEND '78' TO mt_multiplication_lookup_14. | |
APPEND '6A' TO mt_multiplication_lookup_14. | |
APPEND '64' TO mt_multiplication_lookup_14. | |
APPEND '4E' TO mt_multiplication_lookup_14. | |
APPEND '40' TO mt_multiplication_lookup_14. | |
APPEND '52' TO mt_multiplication_lookup_14. | |
APPEND '5C' TO mt_multiplication_lookup_14. | |
APPEND '06' TO mt_multiplication_lookup_14. | |
APPEND '08' TO mt_multiplication_lookup_14. | |
APPEND '1A' TO mt_multiplication_lookup_14. | |
APPEND '14' TO mt_multiplication_lookup_14. | |
APPEND '3E' TO mt_multiplication_lookup_14. | |
APPEND '30' TO mt_multiplication_lookup_14. | |
APPEND '22' TO mt_multiplication_lookup_14. | |
APPEND '2C' TO mt_multiplication_lookup_14. | |
APPEND '96' TO mt_multiplication_lookup_14. | |
APPEND '98' TO mt_multiplication_lookup_14. | |
APPEND '8A' TO mt_multiplication_lookup_14. | |
APPEND '84' TO mt_multiplication_lookup_14. | |
APPEND 'AE' TO mt_multiplication_lookup_14. | |
APPEND 'A0' TO mt_multiplication_lookup_14. | |
APPEND 'B2' TO mt_multiplication_lookup_14. | |
APPEND 'BC' TO mt_multiplication_lookup_14. | |
APPEND 'E6' TO mt_multiplication_lookup_14. | |
APPEND 'E8' TO mt_multiplication_lookup_14. | |
APPEND 'FA' TO mt_multiplication_lookup_14. | |
APPEND 'F4' TO mt_multiplication_lookup_14. | |
APPEND 'DE' TO mt_multiplication_lookup_14. | |
APPEND 'D0' TO mt_multiplication_lookup_14. | |
APPEND 'C2' TO mt_multiplication_lookup_14. | |
APPEND 'CC' TO mt_multiplication_lookup_14. | |
APPEND '41' TO mt_multiplication_lookup_14. | |
APPEND '4F' TO mt_multiplication_lookup_14. | |
APPEND '5D' TO mt_multiplication_lookup_14. | |
APPEND '53' TO mt_multiplication_lookup_14. | |
APPEND '79' TO mt_multiplication_lookup_14. | |
APPEND '77' TO mt_multiplication_lookup_14. | |
APPEND '65' TO mt_multiplication_lookup_14. | |
APPEND '6B' TO mt_multiplication_lookup_14. | |
APPEND '31' TO mt_multiplication_lookup_14. | |
APPEND '3F' TO mt_multiplication_lookup_14. | |
APPEND '2D' TO mt_multiplication_lookup_14. | |
APPEND '23' TO mt_multiplication_lookup_14. | |
APPEND '09' TO mt_multiplication_lookup_14. | |
APPEND '07' TO mt_multiplication_lookup_14. | |
APPEND '15' TO mt_multiplication_lookup_14. | |
APPEND '1B' TO mt_multiplication_lookup_14. | |
APPEND 'A1' TO mt_multiplication_lookup_14. | |
APPEND 'AF' TO mt_multiplication_lookup_14. | |
APPEND 'BD' TO mt_multiplication_lookup_14. | |
APPEND 'B3' TO mt_multiplication_lookup_14. | |
APPEND '99' TO mt_multiplication_lookup_14. | |
APPEND '97' TO mt_multiplication_lookup_14. | |
APPEND '85' TO mt_multiplication_lookup_14. | |
APPEND '8B' TO mt_multiplication_lookup_14. | |
APPEND 'D1' TO mt_multiplication_lookup_14. | |
APPEND 'DF' TO mt_multiplication_lookup_14. | |
APPEND 'CD' TO mt_multiplication_lookup_14. | |
APPEND 'C3' TO mt_multiplication_lookup_14. | |
APPEND 'E9' TO mt_multiplication_lookup_14. | |
APPEND 'E7' TO mt_multiplication_lookup_14. | |
APPEND 'F5' TO mt_multiplication_lookup_14. | |
APPEND 'FB' TO mt_multiplication_lookup_14. | |
APPEND '9A' TO mt_multiplication_lookup_14. | |
APPEND '94' TO mt_multiplication_lookup_14. | |
APPEND '86' TO mt_multiplication_lookup_14. | |
APPEND '88' TO mt_multiplication_lookup_14. | |
APPEND 'A2' TO mt_multiplication_lookup_14. | |
APPEND 'AC' TO mt_multiplication_lookup_14. | |
APPEND 'BE' TO mt_multiplication_lookup_14. | |
APPEND 'B0' TO mt_multiplication_lookup_14. | |
APPEND 'EA' TO mt_multiplication_lookup_14. | |
APPEND 'E4' TO mt_multiplication_lookup_14. | |
APPEND 'F6' TO mt_multiplication_lookup_14. | |
APPEND 'F8' TO mt_multiplication_lookup_14. | |
APPEND 'D2' TO mt_multiplication_lookup_14. | |
APPEND 'DC' TO mt_multiplication_lookup_14. | |
APPEND 'CE' TO mt_multiplication_lookup_14. | |
APPEND 'C0' TO mt_multiplication_lookup_14. | |
APPEND '7A' TO mt_multiplication_lookup_14. | |
APPEND '74' TO mt_multiplication_lookup_14. | |
APPEND '66' TO mt_multiplication_lookup_14. | |
APPEND '68' TO mt_multiplication_lookup_14. | |
APPEND '42' TO mt_multiplication_lookup_14. | |
APPEND '4C' TO mt_multiplication_lookup_14. | |
APPEND '5E' TO mt_multiplication_lookup_14. | |
APPEND '50' TO mt_multiplication_lookup_14. | |
APPEND '0A' TO mt_multiplication_lookup_14. | |
APPEND '04' TO mt_multiplication_lookup_14. | |
APPEND '16' TO mt_multiplication_lookup_14. | |
APPEND '18' TO mt_multiplication_lookup_14. | |
APPEND '32' TO mt_multiplication_lookup_14. | |
APPEND '3C' TO mt_multiplication_lookup_14. | |
APPEND '2E' TO mt_multiplication_lookup_14. | |
APPEND '20' TO mt_multiplication_lookup_14. | |
APPEND 'EC' TO mt_multiplication_lookup_14. | |
APPEND 'E2' TO mt_multiplication_lookup_14. | |
APPEND 'F0' TO mt_multiplication_lookup_14. | |
APPEND 'FE' TO mt_multiplication_lookup_14. | |
APPEND 'D4' TO mt_multiplication_lookup_14. | |
APPEND 'DA' TO mt_multiplication_lookup_14. | |
APPEND 'C8' TO mt_multiplication_lookup_14. | |
APPEND 'C6' TO mt_multiplication_lookup_14. | |
APPEND '9C' TO mt_multiplication_lookup_14. | |
APPEND '92' TO mt_multiplication_lookup_14. | |
APPEND '80' TO mt_multiplication_lookup_14. | |
APPEND '8E' TO mt_multiplication_lookup_14. | |
APPEND 'A4' TO mt_multiplication_lookup_14. | |
APPEND 'AA' TO mt_multiplication_lookup_14. | |
APPEND 'B8' TO mt_multiplication_lookup_14. | |
APPEND 'B6' TO mt_multiplication_lookup_14. | |
APPEND '0C' TO mt_multiplication_lookup_14. | |
APPEND '02' TO mt_multiplication_lookup_14. | |
APPEND '10' TO mt_multiplication_lookup_14. | |
APPEND '1E' TO mt_multiplication_lookup_14. | |
APPEND '34' TO mt_multiplication_lookup_14. | |
APPEND '3A' TO mt_multiplication_lookup_14. | |
APPEND '28' TO mt_multiplication_lookup_14. | |
APPEND '26' TO mt_multiplication_lookup_14. | |
APPEND '7C' TO mt_multiplication_lookup_14. | |
APPEND '72' TO mt_multiplication_lookup_14. | |
APPEND '60' TO mt_multiplication_lookup_14. | |
APPEND '6E' TO mt_multiplication_lookup_14. | |
APPEND '44' TO mt_multiplication_lookup_14. | |
APPEND '4A' TO mt_multiplication_lookup_14. | |
APPEND '58' TO mt_multiplication_lookup_14. | |
APPEND '56' TO mt_multiplication_lookup_14. | |
APPEND '37' TO mt_multiplication_lookup_14. | |
APPEND '39' TO mt_multiplication_lookup_14. | |
APPEND '2B' TO mt_multiplication_lookup_14. | |
APPEND '25' TO mt_multiplication_lookup_14. | |
APPEND '0F' TO mt_multiplication_lookup_14. | |
APPEND '01' TO mt_multiplication_lookup_14. | |
APPEND '13' TO mt_multiplication_lookup_14. | |
APPEND '1D' TO mt_multiplication_lookup_14. | |
APPEND '47' TO mt_multiplication_lookup_14. | |
APPEND '49' TO mt_multiplication_lookup_14. | |
APPEND '5B' TO mt_multiplication_lookup_14. | |
APPEND '55' TO mt_multiplication_lookup_14. | |
APPEND '7F' TO mt_multiplication_lookup_14. | |
APPEND '71' TO mt_multiplication_lookup_14. | |
APPEND '63' TO mt_multiplication_lookup_14. | |
APPEND '6D' TO mt_multiplication_lookup_14. | |
APPEND 'D7' TO mt_multiplication_lookup_14. | |
APPEND 'D9' TO mt_multiplication_lookup_14. | |
APPEND 'CB' TO mt_multiplication_lookup_14. | |
APPEND 'C5' TO mt_multiplication_lookup_14. | |
APPEND 'EF' TO mt_multiplication_lookup_14. | |
APPEND 'E1' TO mt_multiplication_lookup_14. | |
APPEND 'F3' TO mt_multiplication_lookup_14. | |
APPEND 'FD' TO mt_multiplication_lookup_14. | |
APPEND 'A7' TO mt_multiplication_lookup_14. | |
APPEND 'A9' TO mt_multiplication_lookup_14. | |
APPEND 'BB' TO mt_multiplication_lookup_14. | |
APPEND 'B5' TO mt_multiplication_lookup_14. | |
APPEND '9F' TO mt_multiplication_lookup_14. | |
APPEND '91' TO mt_multiplication_lookup_14. | |
APPEND '83' TO mt_multiplication_lookup_14. | |
APPEND '8D' TO mt_multiplication_lookup_14. | |
ENDMETHOD. "_build_multiplication | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Private Method ZDKK_RIJNDAEL_UTILITY=>_BUILD_RCON | |
* +-------------------------------------------------------------------------------------------------+ | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _build_rcon. | |
APPEND '8D' TO mt_rcon. | |
APPEND '01' TO mt_rcon. | |
APPEND '02' TO mt_rcon. | |
APPEND '04' TO mt_rcon. | |
APPEND '08' TO mt_rcon. | |
APPEND '10' TO mt_rcon. | |
APPEND '20' TO mt_rcon. | |
APPEND '40' TO mt_rcon. | |
APPEND '80' TO mt_rcon. | |
APPEND '1B' TO mt_rcon. | |
APPEND '36' TO mt_rcon. | |
APPEND '6C' TO mt_rcon. | |
APPEND 'D8' TO mt_rcon. | |
APPEND 'AB' TO mt_rcon. | |
APPEND '4D' TO mt_rcon. | |
APPEND '9A' TO mt_rcon. | |
APPEND '2F' TO mt_rcon. | |
APPEND '5E' TO mt_rcon. | |
APPEND 'BC' TO mt_rcon. | |
APPEND '63' TO mt_rcon. | |
APPEND 'C6' TO mt_rcon. | |
APPEND '97' TO mt_rcon. | |
APPEND '35' TO mt_rcon. | |
APPEND '6A' TO mt_rcon. | |
APPEND 'D4' TO mt_rcon. | |
APPEND 'B3' TO mt_rcon. | |
APPEND '7D' TO mt_rcon. | |
APPEND 'FA' TO mt_rcon. | |
APPEND 'EF' TO mt_rcon. | |
APPEND 'C5' TO mt_rcon. | |
APPEND '91' TO mt_rcon. | |
APPEND '39' TO mt_rcon. | |
APPEND '72' TO mt_rcon. | |
APPEND 'E4' TO mt_rcon. | |
APPEND 'D3' TO mt_rcon. | |
APPEND 'BD' TO mt_rcon. | |
APPEND '61' TO mt_rcon. | |
APPEND 'C2' TO mt_rcon. | |
APPEND '9F' TO mt_rcon. | |
APPEND '25' TO mt_rcon. | |
APPEND '4A' TO mt_rcon. | |
APPEND '94' TO mt_rcon. | |
APPEND '33' TO mt_rcon. | |
APPEND '66' TO mt_rcon. | |
APPEND 'CC' TO mt_rcon. | |
APPEND '83' TO mt_rcon. | |
APPEND '1D' TO mt_rcon. | |
APPEND '3A' TO mt_rcon. | |
APPEND '74' TO mt_rcon. | |
APPEND 'E8' TO mt_rcon. | |
APPEND 'CB' TO mt_rcon. | |
APPEND '8D' TO mt_rcon. | |
APPEND '01' TO mt_rcon. | |
APPEND '02' TO mt_rcon. | |
APPEND '04' TO mt_rcon. | |
APPEND '08' TO mt_rcon. | |
APPEND '10' TO mt_rcon. | |
APPEND '20' TO mt_rcon. | |
APPEND '40' TO mt_rcon. | |
APPEND '80' TO mt_rcon. | |
APPEND '1B' TO mt_rcon. | |
APPEND '36' TO mt_rcon. | |
APPEND '6C' TO mt_rcon. | |
APPEND 'D8' TO mt_rcon. | |
APPEND 'AB' TO mt_rcon. | |
APPEND '4D' TO mt_rcon. | |
APPEND '9A' TO mt_rcon. | |
APPEND '2F' TO mt_rcon. | |
APPEND '5E' TO mt_rcon. | |
APPEND 'BC' TO mt_rcon. | |
APPEND '63' TO mt_rcon. | |
APPEND 'C6' TO mt_rcon. | |
APPEND '97' TO mt_rcon. | |
APPEND '35' TO mt_rcon. | |
APPEND '6A' TO mt_rcon. | |
APPEND 'D4' TO mt_rcon. | |
APPEND 'B3' TO mt_rcon. | |
APPEND '7D' TO mt_rcon. | |
APPEND 'FA' TO mt_rcon. | |
APPEND 'EF' TO mt_rcon. | |
APPEND 'C5' TO mt_rcon. | |
APPEND '91' TO mt_rcon. | |
APPEND '39' TO mt_rcon. | |
APPEND '72' TO mt_rcon. | |
APPEND 'E4' TO mt_rcon. | |
APPEND 'D3' TO mt_rcon. | |
APPEND 'BD' TO mt_rcon. | |
APPEND '61' TO mt_rcon. | |
APPEND 'C2' TO mt_rcon. | |
APPEND '9F' TO mt_rcon. | |
APPEND '25' TO mt_rcon. | |
APPEND '4A' TO mt_rcon. | |
APPEND '94' TO mt_rcon. | |
APPEND '33' TO mt_rcon. | |
APPEND '66' TO mt_rcon. | |
APPEND 'CC' TO mt_rcon. | |
APPEND '83' TO mt_rcon. | |
APPEND '1D' TO mt_rcon. | |
APPEND '3A' TO mt_rcon. | |
APPEND '74' TO mt_rcon. | |
APPEND 'E8' TO mt_rcon. | |
APPEND 'CB' TO mt_rcon. | |
APPEND '8D' TO mt_rcon. | |
APPEND '01' TO mt_rcon. | |
APPEND '02' TO mt_rcon. | |
APPEND '04' TO mt_rcon. | |
APPEND '08' TO mt_rcon. | |
APPEND '10' TO mt_rcon. | |
APPEND '20' TO mt_rcon. | |
APPEND '40' TO mt_rcon. | |
APPEND '80' TO mt_rcon. | |
APPEND '1B' TO mt_rcon. | |
APPEND '36' TO mt_rcon. | |
APPEND '6C' TO mt_rcon. | |
APPEND 'D8' TO mt_rcon. | |
APPEND 'AB' TO mt_rcon. | |
APPEND '4D' TO mt_rcon. | |
APPEND '9A' TO mt_rcon. | |
APPEND '2F' TO mt_rcon. | |
APPEND '5E' TO mt_rcon. | |
APPEND 'BC' TO mt_rcon. | |
APPEND '63' TO mt_rcon. | |
APPEND 'C6' TO mt_rcon. | |
APPEND '97' TO mt_rcon. | |
APPEND '35' TO mt_rcon. | |
APPEND '6A' TO mt_rcon. | |
APPEND 'D4' TO mt_rcon. | |
APPEND 'B3' TO mt_rcon. | |
APPEND '7D' TO mt_rcon. | |
APPEND 'FA' TO mt_rcon. | |
APPEND 'EF' TO mt_rcon. | |
APPEND 'C5' TO mt_rcon. | |
APPEND '91' TO mt_rcon. | |
APPEND '39' TO mt_rcon. | |
APPEND '72' TO mt_rcon. | |
APPEND 'E4' TO mt_rcon. | |
APPEND 'D3' TO mt_rcon. | |
APPEND 'BD' TO mt_rcon. | |
APPEND '61' TO mt_rcon. | |
APPEND 'C2' TO mt_rcon. | |
APPEND '9F' TO mt_rcon. | |
APPEND '25' TO mt_rcon. | |
APPEND '4A' TO mt_rcon. | |
APPEND '94' TO mt_rcon. | |
APPEND '33' TO mt_rcon. | |
APPEND '66' TO mt_rcon. | |
APPEND 'CC' TO mt_rcon. | |
APPEND '83' TO mt_rcon. | |
APPEND '1D' TO mt_rcon. | |
APPEND '3A' TO mt_rcon. | |
APPEND '74' TO mt_rcon. | |
APPEND 'E8' TO mt_rcon. | |
APPEND 'CB' TO mt_rcon. | |
APPEND '8D' TO mt_rcon. | |
APPEND '01' TO mt_rcon. | |
APPEND '02' TO mt_rcon. | |
APPEND '04' TO mt_rcon. | |
APPEND '08' TO mt_rcon. | |
APPEND '10' TO mt_rcon. | |
APPEND '20' TO mt_rcon. | |
APPEND '40' TO mt_rcon. | |
APPEND '80' TO mt_rcon. | |
APPEND '1B' TO mt_rcon. | |
APPEND '36' TO mt_rcon. | |
APPEND '6C' TO mt_rcon. | |
APPEND 'D8' TO mt_rcon. | |
APPEND 'AB' TO mt_rcon. | |
APPEND '4D' TO mt_rcon. | |
APPEND '9A' TO mt_rcon. | |
APPEND '2F' TO mt_rcon. | |
APPEND '5E' TO mt_rcon. | |
APPEND 'BC' TO mt_rcon. | |
APPEND '63' TO mt_rcon. | |
APPEND 'C6' TO mt_rcon. | |
APPEND '97' TO mt_rcon. | |
APPEND '35' TO mt_rcon. | |
APPEND '6A' TO mt_rcon. | |
APPEND 'D4' TO mt_rcon. | |
APPEND 'B3' TO mt_rcon. | |
APPEND '7D' TO mt_rcon. | |
APPEND 'FA' TO mt_rcon. | |
APPEND 'EF' TO mt_rcon. | |
APPEND 'C5' TO mt_rcon. | |
APPEND '91' TO mt_rcon. | |
APPEND '39' TO mt_rcon. | |
APPEND '72' TO mt_rcon. | |
APPEND 'E4' TO mt_rcon. | |
APPEND 'D3' TO mt_rcon. | |
APPEND 'BD' TO mt_rcon. | |
APPEND '61' TO mt_rcon. | |
APPEND 'C2' TO mt_rcon. | |
APPEND '9F' TO mt_rcon. | |
APPEND '25' TO mt_rcon. | |
APPEND '4A' TO mt_rcon. | |
APPEND '94' TO mt_rcon. | |
APPEND '33' TO mt_rcon. | |
APPEND '66' TO mt_rcon. | |
APPEND 'CC' TO mt_rcon. | |
APPEND '83' TO mt_rcon. | |
APPEND '1D' TO mt_rcon. | |
APPEND '3A' TO mt_rcon. | |
APPEND '74' TO mt_rcon. | |
APPEND 'E8' TO mt_rcon. | |
APPEND 'CB' TO mt_rcon. | |
APPEND '8D' TO mt_rcon. | |
APPEND '01' TO mt_rcon. | |
APPEND '02' TO mt_rcon. | |
APPEND '04' TO mt_rcon. | |
APPEND '08' TO mt_rcon. | |
APPEND '10' TO mt_rcon. | |
APPEND '20' TO mt_rcon. | |
APPEND '40' TO mt_rcon. | |
APPEND '80' TO mt_rcon. | |
APPEND '1B' TO mt_rcon. | |
APPEND '36' TO mt_rcon. | |
APPEND '6C' TO mt_rcon. | |
APPEND 'D8' TO mt_rcon. | |
APPEND 'AB' TO mt_rcon. | |
APPEND '4D' TO mt_rcon. | |
APPEND '9A' TO mt_rcon. | |
APPEND '2F' TO mt_rcon. | |
APPEND '5E' TO mt_rcon. | |
APPEND 'BC' TO mt_rcon. | |
APPEND '63' TO mt_rcon. | |
APPEND 'C6' TO mt_rcon. | |
APPEND '97' TO mt_rcon. | |
APPEND '35' TO mt_rcon. | |
APPEND '6A' TO mt_rcon. | |
APPEND 'D4' TO mt_rcon. | |
APPEND 'B3' TO mt_rcon. | |
APPEND '7D' TO mt_rcon. | |
APPEND 'FA' TO mt_rcon. | |
APPEND 'EF' TO mt_rcon. | |
APPEND 'C5' TO mt_rcon. | |
APPEND '91' TO mt_rcon. | |
APPEND '39' TO mt_rcon. | |
APPEND '72' TO mt_rcon. | |
APPEND 'E4' TO mt_rcon. | |
APPEND 'D3' TO mt_rcon. | |
APPEND 'BD' TO mt_rcon. | |
APPEND '61' TO mt_rcon. | |
APPEND 'C2' TO mt_rcon. | |
APPEND '9F' TO mt_rcon. | |
APPEND '25' TO mt_rcon. | |
APPEND '4A' TO mt_rcon. | |
APPEND '94' TO mt_rcon. | |
APPEND '33' TO mt_rcon. | |
APPEND '66' TO mt_rcon. | |
APPEND 'CC' TO mt_rcon. | |
APPEND '83' TO mt_rcon. | |
APPEND '1D' TO mt_rcon. | |
APPEND '3A' TO mt_rcon. | |
APPEND '74' TO mt_rcon. | |
APPEND 'E8' TO mt_rcon. | |
APPEND 'CB' TO mt_rcon. | |
APPEND '8D' TO mt_rcon. | |
ENDMETHOD. "_build_rcon | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Private Method ZDKK_RIJNDAEL_UTILITY=>_BUILD_ROW_SHIFT | |
* +-------------------------------------------------------------------------------------------------+ | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _build_row_shift. | |
"Block length 4 word | |
APPEND 1 TO mt_row_shift_4. | |
APPEND 6 TO mt_row_shift_4. | |
APPEND 11 TO mt_row_shift_4. | |
APPEND 16 TO mt_row_shift_4. | |
APPEND 5 TO mt_row_shift_4. | |
APPEND 10 TO mt_row_shift_4. | |
APPEND 15 TO mt_row_shift_4. | |
APPEND 4 TO mt_row_shift_4. | |
APPEND 9 TO mt_row_shift_4. | |
APPEND 14 TO mt_row_shift_4. | |
APPEND 3 TO mt_row_shift_4. | |
APPEND 8 TO mt_row_shift_4. | |
APPEND 13 TO mt_row_shift_4. | |
APPEND 2 TO mt_row_shift_4. | |
APPEND 7 TO mt_row_shift_4. | |
APPEND 12 TO mt_row_shift_4. | |
"Block length 5 word | |
APPEND 1 TO mt_row_shift_5. | |
APPEND 6 TO mt_row_shift_5. | |
APPEND 11 TO mt_row_shift_5. | |
APPEND 16 TO mt_row_shift_5. | |
APPEND 5 TO mt_row_shift_5. | |
APPEND 10 TO mt_row_shift_5. | |
APPEND 15 TO mt_row_shift_5. | |
APPEND 20 TO mt_row_shift_5. | |
APPEND 9 TO mt_row_shift_5. | |
APPEND 14 TO mt_row_shift_5. | |
APPEND 19 TO mt_row_shift_5. | |
APPEND 4 TO mt_row_shift_5. | |
APPEND 13 TO mt_row_shift_5. | |
APPEND 18 TO mt_row_shift_5. | |
APPEND 3 TO mt_row_shift_5. | |
APPEND 8 TO mt_row_shift_5. | |
APPEND 17 TO mt_row_shift_5. | |
APPEND 2 TO mt_row_shift_5. | |
APPEND 7 TO mt_row_shift_5. | |
APPEND 12 TO mt_row_shift_5. | |
"Block length 6 word | |
APPEND 1 TO mt_row_shift_6. | |
APPEND 6 TO mt_row_shift_6. | |
APPEND 11 TO mt_row_shift_6. | |
APPEND 16 TO mt_row_shift_6. | |
APPEND 5 TO mt_row_shift_6. | |
APPEND 10 TO mt_row_shift_6. | |
APPEND 15 TO mt_row_shift_6. | |
APPEND 20 TO mt_row_shift_6. | |
APPEND 9 TO mt_row_shift_6. | |
APPEND 14 TO mt_row_shift_6. | |
APPEND 19 TO mt_row_shift_6. | |
APPEND 24 TO mt_row_shift_6. | |
APPEND 13 TO mt_row_shift_6. | |
APPEND 18 TO mt_row_shift_6. | |
APPEND 23 TO mt_row_shift_6. | |
APPEND 4 TO mt_row_shift_6. | |
APPEND 17 TO mt_row_shift_6. | |
APPEND 22 TO mt_row_shift_6. | |
APPEND 3 TO mt_row_shift_6. | |
APPEND 8 TO mt_row_shift_6. | |
APPEND 21 TO mt_row_shift_6. | |
APPEND 2 TO mt_row_shift_6. | |
APPEND 7 TO mt_row_shift_6. | |
APPEND 12 TO mt_row_shift_6. | |
"Block length 7 word | |
APPEND 1 TO mt_row_shift_7. | |
APPEND 6 TO mt_row_shift_7. | |
APPEND 11 TO mt_row_shift_7. | |
APPEND 20 TO mt_row_shift_7. | |
APPEND 5 TO mt_row_shift_7. | |
APPEND 10 TO mt_row_shift_7. | |
APPEND 15 TO mt_row_shift_7. | |
APPEND 24 TO mt_row_shift_7. | |
APPEND 9 TO mt_row_shift_7. | |
APPEND 14 TO mt_row_shift_7. | |
APPEND 19 TO mt_row_shift_7. | |
APPEND 28 TO mt_row_shift_7. | |
APPEND 13 TO mt_row_shift_7. | |
APPEND 18 TO mt_row_shift_7. | |
APPEND 23 TO mt_row_shift_7. | |
APPEND 4 TO mt_row_shift_7. | |
APPEND 17 TO mt_row_shift_7. | |
APPEND 22 TO mt_row_shift_7. | |
APPEND 27 TO mt_row_shift_7. | |
APPEND 8 TO mt_row_shift_7. | |
APPEND 21 TO mt_row_shift_7. | |
APPEND 26 TO mt_row_shift_7. | |
APPEND 3 TO mt_row_shift_7. | |
APPEND 12 TO mt_row_shift_7. | |
APPEND 25 TO mt_row_shift_7. | |
APPEND 2 TO mt_row_shift_7. | |
APPEND 7 TO mt_row_shift_7. | |
APPEND 16 TO mt_row_shift_7. | |
"Block length 8 word | |
APPEND 1 TO mt_row_shift_8. | |
APPEND 6 TO mt_row_shift_8. | |
APPEND 15 TO mt_row_shift_8. | |
APPEND 20 TO mt_row_shift_8. | |
APPEND 5 TO mt_row_shift_8. | |
APPEND 10 TO mt_row_shift_8. | |
APPEND 19 TO mt_row_shift_8. | |
APPEND 24 TO mt_row_shift_8. | |
APPEND 9 TO mt_row_shift_8. | |
APPEND 14 TO mt_row_shift_8. | |
APPEND 23 TO mt_row_shift_8. | |
APPEND 28 TO mt_row_shift_8. | |
APPEND 13 TO mt_row_shift_8. | |
APPEND 18 TO mt_row_shift_8. | |
APPEND 27 TO mt_row_shift_8. | |
APPEND 32 TO mt_row_shift_8. | |
APPEND 17 TO mt_row_shift_8. | |
APPEND 22 TO mt_row_shift_8. | |
APPEND 31 TO mt_row_shift_8. | |
APPEND 4 TO mt_row_shift_8. | |
APPEND 21 TO mt_row_shift_8. | |
APPEND 26 TO mt_row_shift_8. | |
APPEND 3 TO mt_row_shift_8. | |
APPEND 8 TO mt_row_shift_8. | |
APPEND 25 TO mt_row_shift_8. | |
APPEND 30 TO mt_row_shift_8. | |
APPEND 7 TO mt_row_shift_8. | |
APPEND 12 TO mt_row_shift_8. | |
APPEND 29 TO mt_row_shift_8. | |
APPEND 2 TO mt_row_shift_8. | |
APPEND 11 TO mt_row_shift_8. | |
APPEND 16 TO mt_row_shift_8. | |
ENDMETHOD. "_build_row_shift | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Private Method ZDKK_RIJNDAEL_UTILITY=>_BUILD_ROW_SHIFT_INV | |
* +-------------------------------------------------------------------------------------------------+ | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _build_row_shift_inv. | |
"Block length 4 word | |
APPEND 1 TO mt_row_shift_4_inv. | |
APPEND 14 TO mt_row_shift_4_inv. | |
APPEND 11 TO mt_row_shift_4_inv. | |
APPEND 8 TO mt_row_shift_4_inv. | |
APPEND 5 TO mt_row_shift_4_inv. | |
APPEND 2 TO mt_row_shift_4_inv. | |
APPEND 15 TO mt_row_shift_4_inv. | |
APPEND 12 TO mt_row_shift_4_inv. | |
APPEND 9 TO mt_row_shift_4_inv. | |
APPEND 6 TO mt_row_shift_4_inv. | |
APPEND 3 TO mt_row_shift_4_inv. | |
APPEND 16 TO mt_row_shift_4_inv. | |
APPEND 13 TO mt_row_shift_4_inv. | |
APPEND 10 TO mt_row_shift_4_inv. | |
APPEND 7 TO mt_row_shift_4_inv. | |
APPEND 4 TO mt_row_shift_4_inv. | |
"Block length 5 word | |
APPEND 1 TO mt_row_shift_5_inv. | |
APPEND 18 TO mt_row_shift_5_inv. | |
APPEND 15 TO mt_row_shift_5_inv. | |
APPEND 12 TO mt_row_shift_5_inv. | |
APPEND 5 TO mt_row_shift_5_inv. | |
APPEND 2 TO mt_row_shift_5_inv. | |
APPEND 19 TO mt_row_shift_5_inv. | |
APPEND 16 TO mt_row_shift_5_inv. | |
APPEND 9 TO mt_row_shift_5_inv. | |
APPEND 6 TO mt_row_shift_5_inv. | |
APPEND 3 TO mt_row_shift_5_inv. | |
APPEND 20 TO mt_row_shift_5_inv. | |
APPEND 13 TO mt_row_shift_5_inv. | |
APPEND 10 TO mt_row_shift_5_inv. | |
APPEND 7 TO mt_row_shift_5_inv. | |
APPEND 4 TO mt_row_shift_5_inv. | |
APPEND 17 TO mt_row_shift_5_inv. | |
APPEND 14 TO mt_row_shift_5_inv. | |
APPEND 11 TO mt_row_shift_5_inv. | |
APPEND 8 TO mt_row_shift_5_inv. | |
"Block length 6 word | |
APPEND 1 TO mt_row_shift_6_inv. | |
APPEND 22 TO mt_row_shift_6_inv. | |
APPEND 19 TO mt_row_shift_6_inv. | |
APPEND 16 TO mt_row_shift_6_inv. | |
APPEND 5 TO mt_row_shift_6_inv. | |
APPEND 2 TO mt_row_shift_6_inv. | |
APPEND 23 TO mt_row_shift_6_inv. | |
APPEND 20 TO mt_row_shift_6_inv. | |
APPEND 9 TO mt_row_shift_6_inv. | |
APPEND 6 TO mt_row_shift_6_inv. | |
APPEND 3 TO mt_row_shift_6_inv. | |
APPEND 24 TO mt_row_shift_6_inv. | |
APPEND 13 TO mt_row_shift_6_inv. | |
APPEND 10 TO mt_row_shift_6_inv. | |
APPEND 7 TO mt_row_shift_6_inv. | |
APPEND 4 TO mt_row_shift_6_inv. | |
APPEND 17 TO mt_row_shift_6_inv. | |
APPEND 14 TO mt_row_shift_6_inv. | |
APPEND 11 TO mt_row_shift_6_inv. | |
APPEND 8 TO mt_row_shift_6_inv. | |
APPEND 21 TO mt_row_shift_6_inv. | |
APPEND 18 TO mt_row_shift_6_inv. | |
APPEND 15 TO mt_row_shift_6_inv. | |
APPEND 12 TO mt_row_shift_6_inv. | |
"Block length 7 word | |
APPEND 1 TO mt_row_shift_7_inv. | |
APPEND 26 TO mt_row_shift_7_inv. | |
APPEND 23 TO mt_row_shift_7_inv. | |
APPEND 16 TO mt_row_shift_7_inv. | |
APPEND 5 TO mt_row_shift_7_inv. | |
APPEND 2 TO mt_row_shift_7_inv. | |
APPEND 27 TO mt_row_shift_7_inv. | |
APPEND 20 TO mt_row_shift_7_inv. | |
APPEND 9 TO mt_row_shift_7_inv. | |
APPEND 6 TO mt_row_shift_7_inv. | |
APPEND 3 TO mt_row_shift_7_inv. | |
APPEND 24 TO mt_row_shift_7_inv. | |
APPEND 13 TO mt_row_shift_7_inv. | |
APPEND 10 TO mt_row_shift_7_inv. | |
APPEND 7 TO mt_row_shift_7_inv. | |
APPEND 28 TO mt_row_shift_7_inv. | |
APPEND 17 TO mt_row_shift_7_inv. | |
APPEND 14 TO mt_row_shift_7_inv. | |
APPEND 11 TO mt_row_shift_7_inv. | |
APPEND 4 TO mt_row_shift_7_inv. | |
APPEND 21 TO mt_row_shift_7_inv. | |
APPEND 18 TO mt_row_shift_7_inv. | |
APPEND 15 TO mt_row_shift_7_inv. | |
APPEND 8 TO mt_row_shift_7_inv. | |
APPEND 25 TO mt_row_shift_7_inv. | |
APPEND 22 TO mt_row_shift_7_inv. | |
APPEND 19 TO mt_row_shift_7_inv. | |
APPEND 12 TO mt_row_shift_7_inv. | |
"Block length 8 word | |
APPEND 1 TO mt_row_shift_8_inv. | |
APPEND 30 TO mt_row_shift_8_inv. | |
APPEND 23 TO mt_row_shift_8_inv. | |
APPEND 20 TO mt_row_shift_8_inv. | |
APPEND 5 TO mt_row_shift_8_inv. | |
APPEND 2 TO mt_row_shift_8_inv. | |
APPEND 27 TO mt_row_shift_8_inv. | |
APPEND 24 TO mt_row_shift_8_inv. | |
APPEND 9 TO mt_row_shift_8_inv. | |
APPEND 6 TO mt_row_shift_8_inv. | |
APPEND 31 TO mt_row_shift_8_inv. | |
APPEND 28 TO mt_row_shift_8_inv. | |
APPEND 13 TO mt_row_shift_8_inv. | |
APPEND 10 TO mt_row_shift_8_inv. | |
APPEND 3 TO mt_row_shift_8_inv. | |
APPEND 32 TO mt_row_shift_8_inv. | |
APPEND 17 TO mt_row_shift_8_inv. | |
APPEND 14 TO mt_row_shift_8_inv. | |
APPEND 7 TO mt_row_shift_8_inv. | |
APPEND 4 TO mt_row_shift_8_inv. | |
APPEND 21 TO mt_row_shift_8_inv. | |
APPEND 18 TO mt_row_shift_8_inv. | |
APPEND 11 TO mt_row_shift_8_inv. | |
APPEND 8 TO mt_row_shift_8_inv. | |
APPEND 25 TO mt_row_shift_8_inv. | |
APPEND 22 TO mt_row_shift_8_inv. | |
APPEND 15 TO mt_row_shift_8_inv. | |
APPEND 12 TO mt_row_shift_8_inv. | |
APPEND 29 TO mt_row_shift_8_inv. | |
APPEND 26 TO mt_row_shift_8_inv. | |
APPEND 19 TO mt_row_shift_8_inv. | |
APPEND 16 TO mt_row_shift_8_inv. | |
ENDMETHOD. "_build_row_shift_inv | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Private Method ZDKK_RIJNDAEL_UTILITY=>_BUILD_SBOX | |
* +-------------------------------------------------------------------------------------------------+ | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _build_sbox. | |
APPEND '63' TO mt_sbox. | |
APPEND '7C' TO mt_sbox. | |
APPEND '77' TO mt_sbox. | |
APPEND '7B' TO mt_sbox. | |
APPEND 'F2' TO mt_sbox. | |
APPEND '6B' TO mt_sbox. | |
APPEND '6F' TO mt_sbox. | |
APPEND 'C5' TO mt_sbox. | |
APPEND '30' TO mt_sbox. | |
APPEND '01' TO mt_sbox. | |
APPEND '67' TO mt_sbox. | |
APPEND '2B' TO mt_sbox. | |
APPEND 'FE' TO mt_sbox. | |
APPEND 'D7' TO mt_sbox. | |
APPEND 'AB' TO mt_sbox. | |
APPEND '76' TO mt_sbox. | |
APPEND 'CA' TO mt_sbox. | |
APPEND '82' TO mt_sbox. | |
APPEND 'C9' TO mt_sbox. | |
APPEND '7D' TO mt_sbox. | |
APPEND 'FA' TO mt_sbox. | |
APPEND '59' TO mt_sbox. | |
APPEND '47' TO mt_sbox. | |
APPEND 'F0' TO mt_sbox. | |
APPEND 'AD' TO mt_sbox. | |
APPEND 'D4' TO mt_sbox. | |
APPEND 'A2' TO mt_sbox. | |
APPEND 'AF' TO mt_sbox. | |
APPEND '9C' TO mt_sbox. | |
APPEND 'A4' TO mt_sbox. | |
APPEND '72' TO mt_sbox. | |
APPEND 'C0' TO mt_sbox. | |
APPEND 'B7' TO mt_sbox. | |
APPEND 'FD' TO mt_sbox. | |
APPEND '93' TO mt_sbox. | |
APPEND '26' TO mt_sbox. | |
APPEND '36' TO mt_sbox. | |
APPEND '3F' TO mt_sbox. | |
APPEND 'F7' TO mt_sbox. | |
APPEND 'CC' TO mt_sbox. | |
APPEND '34' TO mt_sbox. | |
APPEND 'A5' TO mt_sbox. | |
APPEND 'E5' TO mt_sbox. | |
APPEND 'F1' TO mt_sbox. | |
APPEND '71' TO mt_sbox. | |
APPEND 'D8' TO mt_sbox. | |
APPEND '31' TO mt_sbox. | |
APPEND '15' TO mt_sbox. | |
APPEND '04' TO mt_sbox. | |
APPEND 'C7' TO mt_sbox. | |
APPEND '23' TO mt_sbox. | |
APPEND 'C3' TO mt_sbox. | |
APPEND '18' TO mt_sbox. | |
APPEND '96' TO mt_sbox. | |
APPEND '05' TO mt_sbox. | |
APPEND '9A' TO mt_sbox. | |
APPEND '07' TO mt_sbox. | |
APPEND '12' TO mt_sbox. | |
APPEND '80' TO mt_sbox. | |
APPEND 'E2' TO mt_sbox. | |
APPEND 'EB' TO mt_sbox. | |
APPEND '27' TO mt_sbox. | |
APPEND 'B2' TO mt_sbox. | |
APPEND '75' TO mt_sbox. | |
APPEND '09' TO mt_sbox. | |
APPEND '83' TO mt_sbox. | |
APPEND '2C' TO mt_sbox. | |
APPEND '1A' TO mt_sbox. | |
APPEND '1B' TO mt_sbox. | |
APPEND '6E' TO mt_sbox. | |
APPEND '5A' TO mt_sbox. | |
APPEND 'A0' TO mt_sbox. | |
APPEND '52' TO mt_sbox. | |
APPEND '3B' TO mt_sbox. | |
APPEND 'D6' TO mt_sbox. | |
APPEND 'B3' TO mt_sbox. | |
APPEND '29' TO mt_sbox. | |
APPEND 'E3' TO mt_sbox. | |
APPEND '2F' TO mt_sbox. | |
APPEND '84' TO mt_sbox. | |
APPEND '53' TO mt_sbox. | |
APPEND 'D1' TO mt_sbox. | |
APPEND '00' TO mt_sbox. | |
APPEND 'ED' TO mt_sbox. | |
APPEND '20' TO mt_sbox. | |
APPEND 'FC' TO mt_sbox. | |
APPEND 'B1' TO mt_sbox. | |
APPEND '5B' TO mt_sbox. | |
APPEND '6A' TO mt_sbox. | |
APPEND 'CB' TO mt_sbox. | |
APPEND 'BE' TO mt_sbox. | |
APPEND '39' TO mt_sbox. | |
APPEND '4A' TO mt_sbox. | |
APPEND '4C' TO mt_sbox. | |
APPEND '58' TO mt_sbox. | |
APPEND 'CF' TO mt_sbox. | |
APPEND 'D0' TO mt_sbox. | |
APPEND 'EF' TO mt_sbox. | |
APPEND 'AA' TO mt_sbox. | |
APPEND 'FB' TO mt_sbox. | |
APPEND '43' TO mt_sbox. | |
APPEND '4D' TO mt_sbox. | |
APPEND '33' TO mt_sbox. | |
APPEND '85' TO mt_sbox. | |
APPEND '45' TO mt_sbox. | |
APPEND 'F9' TO mt_sbox. | |
APPEND '02' TO mt_sbox. | |
APPEND '7F' TO mt_sbox. | |
APPEND '50' TO mt_sbox. | |
APPEND '3C' TO mt_sbox. | |
APPEND '9F' TO mt_sbox. | |
APPEND 'A8' TO mt_sbox. | |
APPEND '51' TO mt_sbox. | |
APPEND 'A3' TO mt_sbox. | |
APPEND '40' TO mt_sbox. | |
APPEND '8F' TO mt_sbox. | |
APPEND '92' TO mt_sbox. | |
APPEND '9D' TO mt_sbox. | |
APPEND '38' TO mt_sbox. | |
APPEND 'F5' TO mt_sbox. | |
APPEND 'BC' TO mt_sbox. | |
APPEND 'B6' TO mt_sbox. | |
APPEND 'DA' TO mt_sbox. | |
APPEND '21' TO mt_sbox. | |
APPEND '10' TO mt_sbox. | |
APPEND 'FF' TO mt_sbox. | |
APPEND 'F3' TO mt_sbox. | |
APPEND 'D2' TO mt_sbox. | |
APPEND 'CD' TO mt_sbox. | |
APPEND '0C' TO mt_sbox. | |
APPEND '13' TO mt_sbox. | |
APPEND 'EC' TO mt_sbox. | |
APPEND '5F' TO mt_sbox. | |
APPEND '97' TO mt_sbox. | |
APPEND '44' TO mt_sbox. | |
APPEND '17' TO mt_sbox. | |
APPEND 'C4' TO mt_sbox. | |
APPEND 'A7' TO mt_sbox. | |
APPEND '7E' TO mt_sbox. | |
APPEND '3D' TO mt_sbox. | |
APPEND '64' TO mt_sbox. | |
APPEND '5D' TO mt_sbox. | |
APPEND '19' TO mt_sbox. | |
APPEND '73' TO mt_sbox. | |
APPEND '60' TO mt_sbox. | |
APPEND '81' TO mt_sbox. | |
APPEND '4F' TO mt_sbox. | |
APPEND 'DC' TO mt_sbox. | |
APPEND '22' TO mt_sbox. | |
APPEND '2A' TO mt_sbox. | |
APPEND '90' TO mt_sbox. | |
APPEND '88' TO mt_sbox. | |
APPEND '46' TO mt_sbox. | |
APPEND 'EE' TO mt_sbox. | |
APPEND 'B8' TO mt_sbox. | |
APPEND '14' TO mt_sbox. | |
APPEND 'DE' TO mt_sbox. | |
APPEND '5E' TO mt_sbox. | |
APPEND '0B' TO mt_sbox. | |
APPEND 'DB' TO mt_sbox. | |
APPEND 'E0' TO mt_sbox. | |
APPEND '32' TO mt_sbox. | |
APPEND '3A' TO mt_sbox. | |
APPEND '0A' TO mt_sbox. | |
APPEND '49' TO mt_sbox. | |
APPEND '06' TO mt_sbox. | |
APPEND '24' TO mt_sbox. | |
APPEND '5C' TO mt_sbox. | |
APPEND 'C2' TO mt_sbox. | |
APPEND 'D3' TO mt_sbox. | |
APPEND 'AC' TO mt_sbox. | |
APPEND '62' TO mt_sbox. | |
APPEND '91' TO mt_sbox. | |
APPEND '95' TO mt_sbox. | |
APPEND 'E4' TO mt_sbox. | |
APPEND '79' TO mt_sbox. | |
APPEND 'E7' TO mt_sbox. | |
APPEND 'C8' TO mt_sbox. | |
APPEND '37' TO mt_sbox. | |
APPEND '6D' TO mt_sbox. | |
APPEND '8D' TO mt_sbox. | |
APPEND 'D5' TO mt_sbox. | |
APPEND '4E' TO mt_sbox. | |
APPEND 'A9' TO mt_sbox. | |
APPEND '6C' TO mt_sbox. | |
APPEND '56' TO mt_sbox. | |
APPEND 'F4' TO mt_sbox. | |
APPEND 'EA' TO mt_sbox. | |
APPEND '65' TO mt_sbox. | |
APPEND '7A' TO mt_sbox. | |
APPEND 'AE' TO mt_sbox. | |
APPEND '08' TO mt_sbox. | |
APPEND 'BA' TO mt_sbox. | |
APPEND '78' TO mt_sbox. | |
APPEND '25' TO mt_sbox. | |
APPEND '2E' TO mt_sbox. | |
APPEND '1C' TO mt_sbox. | |
APPEND 'A6' TO mt_sbox. | |
APPEND 'B4' TO mt_sbox. | |
APPEND 'C6' TO mt_sbox. | |
APPEND 'E8' TO mt_sbox. | |
APPEND 'DD' TO mt_sbox. | |
APPEND '74' TO mt_sbox. | |
APPEND '1F' TO mt_sbox. | |
APPEND '4B' TO mt_sbox. | |
APPEND 'BD' TO mt_sbox. | |
APPEND '8B' TO mt_sbox. | |
APPEND '8A' TO mt_sbox. | |
APPEND '70' TO mt_sbox. | |
APPEND '3E' TO mt_sbox. | |
APPEND 'B5' TO mt_sbox. | |
APPEND '66' TO mt_sbox. | |
APPEND '48' TO mt_sbox. | |
APPEND '03' TO mt_sbox. | |
APPEND 'F6' TO mt_sbox. | |
APPEND '0E' TO mt_sbox. | |
APPEND '61' TO mt_sbox. | |
APPEND '35' TO mt_sbox. | |
APPEND '57' TO mt_sbox. | |
APPEND 'B9' TO mt_sbox. | |
APPEND '86' TO mt_sbox. | |
APPEND 'C1' TO mt_sbox. | |
APPEND '1D' TO mt_sbox. | |
APPEND '9E' TO mt_sbox. | |
APPEND 'E1' TO mt_sbox. | |
APPEND 'F8' TO mt_sbox. | |
APPEND '98' TO mt_sbox. | |
APPEND '11' TO mt_sbox. | |
APPEND '69' TO mt_sbox. | |
APPEND 'D9' TO mt_sbox. | |
APPEND '8E' TO mt_sbox. | |
APPEND '94' TO mt_sbox. | |
APPEND '9B' TO mt_sbox. | |
APPEND '1E' TO mt_sbox. | |
APPEND '87' TO mt_sbox. | |
APPEND 'E9' TO mt_sbox. | |
APPEND 'CE' TO mt_sbox. | |
APPEND '55' TO mt_sbox. | |
APPEND '28' TO mt_sbox. | |
APPEND 'DF' TO mt_sbox. | |
APPEND '8C' TO mt_sbox. | |
APPEND 'A1' TO mt_sbox. | |
APPEND '89' TO mt_sbox. | |
APPEND '0D' TO mt_sbox. | |
APPEND 'BF' TO mt_sbox. | |
APPEND 'E6' TO mt_sbox. | |
APPEND '42' TO mt_sbox. | |
APPEND '68' TO mt_sbox. | |
APPEND '41' TO mt_sbox. | |
APPEND '99' TO mt_sbox. | |
APPEND '2D' TO mt_sbox. | |
APPEND '0F' TO mt_sbox. | |
APPEND 'B0' TO mt_sbox. | |
APPEND '54' TO mt_sbox. | |
APPEND 'BB' TO mt_sbox. | |
APPEND '16' TO mt_sbox. | |
ENDMETHOD. "_build_sbox | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Private Method ZDKK_RIJNDAEL_UTILITY=>_BUILD_SBOX_INV | |
* +-------------------------------------------------------------------------------------------------+ | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _build_sbox_inv. | |
APPEND '52' TO mt_sbox_inv. | |
APPEND '09' TO mt_sbox_inv. | |
APPEND '6A' TO mt_sbox_inv. | |
APPEND 'D5' TO mt_sbox_inv. | |
APPEND '30' TO mt_sbox_inv. | |
APPEND '36' TO mt_sbox_inv. | |
APPEND 'A5' TO mt_sbox_inv. | |
APPEND '38' TO mt_sbox_inv. | |
APPEND 'BF' TO mt_sbox_inv. | |
APPEND '40' TO mt_sbox_inv. | |
APPEND 'A3' TO mt_sbox_inv. | |
APPEND '9E' TO mt_sbox_inv. | |
APPEND '81' TO mt_sbox_inv. | |
APPEND 'F3' TO mt_sbox_inv. | |
APPEND 'D7' TO mt_sbox_inv. | |
APPEND 'FB' TO mt_sbox_inv. | |
APPEND '7C' TO mt_sbox_inv. | |
APPEND 'E3' TO mt_sbox_inv. | |
APPEND '39' TO mt_sbox_inv. | |
APPEND '82' TO mt_sbox_inv. | |
APPEND '9B' TO mt_sbox_inv. | |
APPEND '2F' TO mt_sbox_inv. | |
APPEND 'FF' TO mt_sbox_inv. | |
APPEND '87' TO mt_sbox_inv. | |
APPEND '34' TO mt_sbox_inv. | |
APPEND '8E' TO mt_sbox_inv. | |
APPEND '43' TO mt_sbox_inv. | |
APPEND '44' TO mt_sbox_inv. | |
APPEND 'C4' TO mt_sbox_inv. | |
APPEND 'DE' TO mt_sbox_inv. | |
APPEND 'E9' TO mt_sbox_inv. | |
APPEND 'CB' TO mt_sbox_inv. | |
APPEND '54' TO mt_sbox_inv. | |
APPEND '7B' TO mt_sbox_inv. | |
APPEND '94' TO mt_sbox_inv. | |
APPEND '32' TO mt_sbox_inv. | |
APPEND 'A6' TO mt_sbox_inv. | |
APPEND 'C2' TO mt_sbox_inv. | |
APPEND '23' TO mt_sbox_inv. | |
APPEND '3D' TO mt_sbox_inv. | |
APPEND 'EE' TO mt_sbox_inv. | |
APPEND '4C' TO mt_sbox_inv. | |
APPEND '95' TO mt_sbox_inv. | |
APPEND '0B' TO mt_sbox_inv. | |
APPEND '42' TO mt_sbox_inv. | |
APPEND 'FA' TO mt_sbox_inv. | |
APPEND 'C3' TO mt_sbox_inv. | |
APPEND '4E' TO mt_sbox_inv. | |
APPEND '08' TO mt_sbox_inv. | |
APPEND '2E' TO mt_sbox_inv. | |
APPEND 'A1' TO mt_sbox_inv. | |
APPEND '66' TO mt_sbox_inv. | |
APPEND '28' TO mt_sbox_inv. | |
APPEND 'D9' TO mt_sbox_inv. | |
APPEND '24' TO mt_sbox_inv. | |
APPEND 'B2' TO mt_sbox_inv. | |
APPEND '76' TO mt_sbox_inv. | |
APPEND '5B' TO mt_sbox_inv. | |
APPEND 'A2' TO mt_sbox_inv. | |
APPEND '49' TO mt_sbox_inv. | |
APPEND '6D' TO mt_sbox_inv. | |
APPEND '8B' TO mt_sbox_inv. | |
APPEND 'D1' TO mt_sbox_inv. | |
APPEND '25' TO mt_sbox_inv. | |
APPEND '72' TO mt_sbox_inv. | |
APPEND 'F8' TO mt_sbox_inv. | |
APPEND 'F6' TO mt_sbox_inv. | |
APPEND '64' TO mt_sbox_inv. | |
APPEND '86' TO mt_sbox_inv. | |
APPEND '68' TO mt_sbox_inv. | |
APPEND '98' TO mt_sbox_inv. | |
APPEND '16' TO mt_sbox_inv. | |
APPEND 'D4' TO mt_sbox_inv. | |
APPEND 'A4' TO mt_sbox_inv. | |
APPEND '5C' TO mt_sbox_inv. | |
APPEND 'CC' TO mt_sbox_inv. | |
APPEND '5D' TO mt_sbox_inv. | |
APPEND '65' TO mt_sbox_inv. | |
APPEND 'B6' TO mt_sbox_inv. | |
APPEND '92' TO mt_sbox_inv. | |
APPEND '6C' TO mt_sbox_inv. | |
APPEND '70' TO mt_sbox_inv. | |
APPEND '48' TO mt_sbox_inv. | |
APPEND '50' TO mt_sbox_inv. | |
APPEND 'FD' TO mt_sbox_inv. | |
APPEND 'ED' TO mt_sbox_inv. | |
APPEND 'B9' TO mt_sbox_inv. | |
APPEND 'DA' TO mt_sbox_inv. | |
APPEND '5E' TO mt_sbox_inv. | |
APPEND '15' TO mt_sbox_inv. | |
APPEND '46' TO mt_sbox_inv. | |
APPEND '57' TO mt_sbox_inv. | |
APPEND 'A7' TO mt_sbox_inv. | |
APPEND '8D' TO mt_sbox_inv. | |
APPEND '9D' TO mt_sbox_inv. | |
APPEND '84' TO mt_sbox_inv. | |
APPEND '90' TO mt_sbox_inv. | |
APPEND 'D8' TO mt_sbox_inv. | |
APPEND 'AB' TO mt_sbox_inv. | |
APPEND '00' TO mt_sbox_inv. | |
APPEND '8C' TO mt_sbox_inv. | |
APPEND 'BC' TO mt_sbox_inv. | |
APPEND 'D3' TO mt_sbox_inv. | |
APPEND '0A' TO mt_sbox_inv. | |
APPEND 'F7' TO mt_sbox_inv. | |
APPEND 'E4' TO mt_sbox_inv. | |
APPEND '58' TO mt_sbox_inv. | |
APPEND '05' TO mt_sbox_inv. | |
APPEND 'B8' TO mt_sbox_inv. | |
APPEND 'B3' TO mt_sbox_inv. | |
APPEND '45' TO mt_sbox_inv. | |
APPEND '06' TO mt_sbox_inv. | |
APPEND 'D0' TO mt_sbox_inv. | |
APPEND '2C' TO mt_sbox_inv. | |
APPEND '1E' TO mt_sbox_inv. | |
APPEND '8F' TO mt_sbox_inv. | |
APPEND 'CA' TO mt_sbox_inv. | |
APPEND '3F' TO mt_sbox_inv. | |
APPEND '0F' TO mt_sbox_inv. | |
APPEND '02' TO mt_sbox_inv. | |
APPEND 'C1' TO mt_sbox_inv. | |
APPEND 'AF' TO mt_sbox_inv. | |
APPEND 'BD' TO mt_sbox_inv. | |
APPEND '03' TO mt_sbox_inv. | |
APPEND '01' TO mt_sbox_inv. | |
APPEND '13' TO mt_sbox_inv. | |
APPEND '8A' TO mt_sbox_inv. | |
APPEND '6B' TO mt_sbox_inv. | |
APPEND '3A' TO mt_sbox_inv. | |
APPEND '91' TO mt_sbox_inv. | |
APPEND '11' TO mt_sbox_inv. | |
APPEND '41' TO mt_sbox_inv. | |
APPEND '4F' TO mt_sbox_inv. | |
APPEND '67' TO mt_sbox_inv. | |
APPEND 'DC' TO mt_sbox_inv. | |
APPEND 'EA' TO mt_sbox_inv. | |
APPEND '97' TO mt_sbox_inv. | |
APPEND 'F2' TO mt_sbox_inv. | |
APPEND 'CF' TO mt_sbox_inv. | |
APPEND 'CE' TO mt_sbox_inv. | |
APPEND 'F0' TO mt_sbox_inv. | |
APPEND 'B4' TO mt_sbox_inv. | |
APPEND 'E6' TO mt_sbox_inv. | |
APPEND '73' TO mt_sbox_inv. | |
APPEND '96' TO mt_sbox_inv. | |
APPEND 'AC' TO mt_sbox_inv. | |
APPEND '74' TO mt_sbox_inv. | |
APPEND '22' TO mt_sbox_inv. | |
APPEND 'E7' TO mt_sbox_inv. | |
APPEND 'AD' TO mt_sbox_inv. | |
APPEND '35' TO mt_sbox_inv. | |
APPEND '85' TO mt_sbox_inv. | |
APPEND 'E2' TO mt_sbox_inv. | |
APPEND 'F9' TO mt_sbox_inv. | |
APPEND '37' TO mt_sbox_inv. | |
APPEND 'E8' TO mt_sbox_inv. | |
APPEND '1C' TO mt_sbox_inv. | |
APPEND '75' TO mt_sbox_inv. | |
APPEND 'DF' TO mt_sbox_inv. | |
APPEND '6E' TO mt_sbox_inv. | |
APPEND '47' TO mt_sbox_inv. | |
APPEND 'F1' TO mt_sbox_inv. | |
APPEND '1A' TO mt_sbox_inv. | |
APPEND '71' TO mt_sbox_inv. | |
APPEND '1D' TO mt_sbox_inv. | |
APPEND '29' TO mt_sbox_inv. | |
APPEND 'C5' TO mt_sbox_inv. | |
APPEND '89' TO mt_sbox_inv. | |
APPEND '6F' TO mt_sbox_inv. | |
APPEND 'B7' TO mt_sbox_inv. | |
APPEND '62' TO mt_sbox_inv. | |
APPEND '0E' TO mt_sbox_inv. | |
APPEND 'AA' TO mt_sbox_inv. | |
APPEND '18' TO mt_sbox_inv. | |
APPEND 'BE' TO mt_sbox_inv. | |
APPEND '1B' TO mt_sbox_inv. | |
APPEND 'FC' TO mt_sbox_inv. | |
APPEND '56' TO mt_sbox_inv. | |
APPEND '3E' TO mt_sbox_inv. | |
APPEND '4B' TO mt_sbox_inv. | |
APPEND 'C6' TO mt_sbox_inv. | |
APPEND 'D2' TO mt_sbox_inv. | |
APPEND '79' TO mt_sbox_inv. | |
APPEND '20' TO mt_sbox_inv. | |
APPEND '9A' TO mt_sbox_inv. | |
APPEND 'DB' TO mt_sbox_inv. | |
APPEND 'C0' TO mt_sbox_inv. | |
APPEND 'FE' TO mt_sbox_inv. | |
APPEND '78' TO mt_sbox_inv. | |
APPEND 'CD' TO mt_sbox_inv. | |
APPEND '5A' TO mt_sbox_inv. | |
APPEND 'F4' TO mt_sbox_inv. | |
APPEND '1F' TO mt_sbox_inv. | |
APPEND 'DD' TO mt_sbox_inv. | |
APPEND 'A8' TO mt_sbox_inv. | |
APPEND '33' TO mt_sbox_inv. | |
APPEND '88' TO mt_sbox_inv. | |
APPEND '07' TO mt_sbox_inv. | |
APPEND 'C7' TO mt_sbox_inv. | |
APPEND '31' TO mt_sbox_inv. | |
APPEND 'B1' TO mt_sbox_inv. | |
APPEND '12' TO mt_sbox_inv. | |
APPEND '10' TO mt_sbox_inv. | |
APPEND '59' TO mt_sbox_inv. | |
APPEND '27' TO mt_sbox_inv. | |
APPEND '80' TO mt_sbox_inv. | |
APPEND 'EC' TO mt_sbox_inv. | |
APPEND '5F' TO mt_sbox_inv. | |
APPEND '60' TO mt_sbox_inv. | |
APPEND '51' TO mt_sbox_inv. | |
APPEND '7F' TO mt_sbox_inv. | |
APPEND 'A9' TO mt_sbox_inv. | |
APPEND '19' TO mt_sbox_inv. | |
APPEND 'B5' TO mt_sbox_inv. | |
APPEND '4A' TO mt_sbox_inv. | |
APPEND '0D' TO mt_sbox_inv. | |
APPEND '2D' TO mt_sbox_inv. | |
APPEND 'E5' TO mt_sbox_inv. | |
APPEND '7A' TO mt_sbox_inv. | |
APPEND '9F' TO mt_sbox_inv. | |
APPEND '93' TO mt_sbox_inv. | |
APPEND 'C9' TO mt_sbox_inv. | |
APPEND '9C' TO mt_sbox_inv. | |
APPEND 'EF' TO mt_sbox_inv. | |
APPEND 'A0' TO mt_sbox_inv. | |
APPEND 'E0' TO mt_sbox_inv. | |
APPEND '3B' TO mt_sbox_inv. | |
APPEND '4D' TO mt_sbox_inv. | |
APPEND 'AE' TO mt_sbox_inv. | |
APPEND '2A' TO mt_sbox_inv. | |
APPEND 'F5' TO mt_sbox_inv. | |
APPEND 'B0' TO mt_sbox_inv. | |
APPEND 'C8' TO mt_sbox_inv. | |
APPEND 'EB' TO mt_sbox_inv. | |
APPEND 'BB' TO mt_sbox_inv. | |
APPEND '3C' TO mt_sbox_inv. | |
APPEND '83' TO mt_sbox_inv. | |
APPEND '53' TO mt_sbox_inv. | |
APPEND '99' TO mt_sbox_inv. | |
APPEND '61' TO mt_sbox_inv. | |
APPEND '17' TO mt_sbox_inv. | |
APPEND '2B' TO mt_sbox_inv. | |
APPEND '04' TO mt_sbox_inv. | |
APPEND '7E' TO mt_sbox_inv. | |
APPEND 'BA' TO mt_sbox_inv. | |
APPEND '77' TO mt_sbox_inv. | |
APPEND 'D6' TO mt_sbox_inv. | |
APPEND '26' TO mt_sbox_inv. | |
APPEND 'E1' TO mt_sbox_inv. | |
APPEND '69' TO mt_sbox_inv. | |
APPEND '14' TO mt_sbox_inv. | |
APPEND '63' TO mt_sbox_inv. | |
APPEND '55' TO mt_sbox_inv. | |
APPEND '21' TO mt_sbox_inv. | |
APPEND '0C' TO mt_sbox_inv. | |
APPEND '7D' TO mt_sbox_inv. | |
ENDMETHOD. "_build_sbox_inv | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_RIJNDAEL_UTILITY=>_GET_MULTIPLICATION_11 | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_X TYPE X | |
* | [<-()] R_X TYPE HEXTYP | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _get_multiplication_11. | |
DATA: lookup_index TYPE int1. | |
lookup_index = i_x. | |
READ TABLE mt_multiplication_lookup_11 INDEX lookup_index + 1 INTO r_x. | |
ENDMETHOD. "_GET_MULTIPLICATION_11 | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_RIJNDAEL_UTILITY=>_GET_MULTIPLICATION_13 | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_X TYPE X | |
* | [<-()] R_X TYPE HEXTYP | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _get_multiplication_13. | |
DATA: lookup_index TYPE int1. | |
lookup_index = i_x. | |
READ TABLE mt_multiplication_lookup_13 INDEX lookup_index + 1 INTO r_x. | |
ENDMETHOD. "_GET_MULTIPLICATION_13 | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_RIJNDAEL_UTILITY=>_GET_MULTIPLICATION_14 | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_X TYPE X | |
* | [<-()] R_X TYPE HEXTYP | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _get_multiplication_14. | |
DATA: lookup_index TYPE int1. | |
lookup_index = i_x. | |
READ TABLE mt_multiplication_lookup_14 INDEX lookup_index + 1 INTO r_x. | |
ENDMETHOD. "_get_multiplication_14 | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_RIJNDAEL_UTILITY=>_GET_MULTIPLICATION_2 | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_X TYPE X | |
* | [<-()] R_X TYPE HEXTYP | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _get_multiplication_2. | |
DATA: lookup_index TYPE int1. | |
lookup_index = i_x. | |
READ TABLE mt_multiplication_lookup_2 INDEX lookup_index + 1 INTO r_x. | |
ENDMETHOD. "_get_multiplication_2 | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_RIJNDAEL_UTILITY=>_GET_MULTIPLICATION_3 | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_X TYPE X | |
* | [<-()] R_X TYPE HEXTYP | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _get_multiplication_3. | |
DATA: lookup_index TYPE int1. | |
lookup_index = i_x. | |
READ TABLE mt_multiplication_lookup_3 INDEX lookup_index + 1 INTO r_x. | |
ENDMETHOD. "_GET_MULTIPLICATION_3 | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_RIJNDAEL_UTILITY=>_GET_MULTIPLICATION_9 | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_X TYPE X | |
* | [<-()] R_X TYPE HEXTYP | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _get_multiplication_9. | |
DATA: lookup_index TYPE int1. | |
lookup_index = i_x. | |
READ TABLE mt_multiplication_lookup_9 INDEX lookup_index + 1 INTO r_x. | |
ENDMETHOD. "_GET_MULTIPLICATION_9 | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_RIJNDAEL_UTILITY=>_RCON | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [--->] I_NUMBER TYPE INT4 | |
* | [<---] E_ARRAY LIKE MT_X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _rcon. | |
DATA: temp TYPE x. | |
CLEAR e_array. | |
READ TABLE mt_rcon INDEX i_number + 1 INTO temp. | |
APPEND temp TO e_array. | |
APPEND '00' TO e_array. | |
APPEND '00' TO e_array. | |
APPEND '00' TO e_array. | |
ENDMETHOD. "rcon | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_RIJNDAEL_UTILITY=>_SBOX | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [<-->] C_X TYPE X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _sbox. | |
READ TABLE mt_sbox INDEX c_x + 1 INTO c_x. | |
ENDMETHOD. "sbox | |
* <SIGNATURE>---------------------------------------------------------------------------------------+ | |
* | Static Protected Method ZDKK_RIJNDAEL_UTILITY=>_SBOX_INV | |
* +-------------------------------------------------------------------------------------------------+ | |
* | [<-->] C_X TYPE X | |
* +--------------------------------------------------------------------------------------</SIGNATURE> | |
METHOD _sbox_inv. | |
READ TABLE mt_sbox_inv INDEX c_x + 1 INTO c_x. | |
ENDMETHOD. "sbox_inv | |
ENDCLASS. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
REPORT zz_aes_test. | |
PARAMETERS: p_encdat TYPE string. | |
START-OF-SELECTION. | |
CONSTANTS: lc_byte_lf TYPE xstring VALUE '0A', "line feed | |
lc_byte_cr TYPE xstring VALUE '0D', "carriage return | |
lc_byte_ws TYPE xstring VALUE '20'. "space character | |
DATA: lr_aes_util TYPE REF TO zdkk_aes_utility. | |
DATA: lv_x_data TYPE xstring, | |
lv_x_key TYPE xstring, | |
lv_x_iv TYPE xstring, | |
lv_x_result TYPE xstring, | |
lv_result TYPE string. | |
DATA: ls_aeskey TYPE zdkk_bkto_aeskey, | |
lt_data TYPE tsfixml, | |
lv_len TYPE i. | |
"Retrieve AES Key and IV from customizing | |
lv_x_key = 'CAE47A6067F0F2DCC728AF877530529038035761C89E0636DB043A6FE6815F04'. | |
lv_x_iv = '4BBF93F6535EC0AD41CBDEB346719675'. | |
"Passowrd: TUA_DKK_CCIP_PW | |
"First check whether the encryption key is valid | |
CREATE OBJECT lr_aes_util. | |
IF NOT lr_aes_util->is_valid_key_xstring( lv_x_key ) = 'X'. | |
WRITE: / 'Invalid Key!'. | |
RETURN. | |
ENDIF. | |
"Convert payload from Base64 to Hex | |
CALL FUNCTION 'SCMS_BASE64_DECODE_STR' | |
EXPORTING | |
input = p_encdat | |
unescape = 'X' | |
IMPORTING | |
output = lv_x_data. | |
"Then decrypt the payload using the encryption key and init. vector, all in xstring format | |
CALL METHOD lr_aes_util->decrypt_xstring( | |
EXPORTING | |
i_data = lv_x_data | |
i_key = lv_x_key | |
i_initialization_vector = lv_x_iv | |
i_encryption_mode = 'CBC' | |
IMPORTING | |
e_data = lv_x_result ). | |
"Remove trailing CR/LF bytes and PKCS#7 padding, which comes from OpenSSL. | |
"See https://en.wikipedia.org/wiki/Padding_%28cryptography%29#PKCS7 for more information. | |
DO. | |
lv_len = xstrlen( lv_x_result ) - 1. | |
IF lv_len = -1. | |
EXIT. | |
ENDIF. | |
IF lv_x_result+lv_len(1) <= lc_byte_ws. | |
"remove trailing non-printable character | |
lv_x_result = lv_x_result(lv_len). | |
ELSE. | |
EXIT. | |
ENDIF. | |
ENDDO. | |
"Finally convert the decrypted binary xstring back to a string again | |
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' | |
EXPORTING | |
buffer = lv_x_result | |
IMPORTING | |
output_length = lv_len | |
TABLES | |
binary_tab = lt_data. | |
CALL FUNCTION 'SCMS_BINARY_TO_STRING' | |
EXPORTING | |
input_length = lv_len | |
IMPORTING | |
text_buffer = lv_result | |
TABLES | |
binary_tab = lt_data. | |
WRITE: / 'Decrypted data:', lv_result. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment