SLAA547C July   2013  – July 2021 MSP430FR5739

 

  1. 1Software Benchmarks
    1. 1.1 AES Benchmarks
    2. 1.2 DES Benchmarks
    3. 1.3 SHA-2 Benchmarks
  2. 2Using Library Functions
    1. 2.1 AES 128
      1. 2.1.1 Encrypting With AES 128
      2. 2.1.2 Decrypting With AES 128
    2. 2.2 DES
      1. 2.2.1 Setting the Key Schedule for DES
      2. 2.2.2 Encrypting and Decryption With DES
      3. 2.2.3 Encryption and Decryption With DES CBC Mode
    3. 2.3 3DES
      1. 2.3.1 Encrypting and Decrypting With Triple DES
    4. 2.4 SHA-2
      1. 2.4.1 Hashing With SHA-256
      2. 2.4.2 Hashing With SHA-224
  3. 3Overview of Library Functions
    1. 3.1 AES 128
      1.      aes_enc_dec
      2.      aes_encrypt
    2. 3.2 DES and 3DES
      1.      Des_Key
      2.      Des_Enc
      3.      Des_Dec
      4.      DES_ENC_CBC
      5.      DES_DEC_CBC
      6.      TripleDES_ENC
      7.      TripleDES_DEC
      8.      TripleDES_ENC_CBC
      9.      TripleDES_DEC_CBC
    3. 3.3 SHA-256 and SHA-224
      1.      SHA_256
  4. 4Cryptographic Standard Definitions
    1. 4.1 AES
      1. 4.1.1 Basic Concept of Algorithm
      2. 4.1.2 Structure of Key and Input Data
      3. 4.1.3 Substitute Bytes (Subbytes Operation)
      4. 4.1.4 Shift Rows (Shiftrows Operation)
      5. 4.1.5 Mix Columns (Mixcolumns Operation)
      6. 4.1.6 Add Round Key (Addroundkey Operation)
      7. 4.1.7 Key Expansion (Keyexpansion Operation)
    2. 4.2 DES and 3DES
      1. 4.2.1 DES Algorithm Structure
      2. 4.2.2 The Function Block
      3. 4.2.3 Key Schedule
      4. 4.2.4 Triple DES
      5. 4.2.5 Cipher Block Chaining (CBC) Mode
    3. 4.3 SHA-256 and SHA-224
      1. 4.3.1 Message Padding and Parsing
      2. 4.3.2 SHA-256 Algorithm
      3. 4.3.3 Equations Found in SHA-256 Algorithm
      4. 4.3.4 SHA-224
  5. 5References
    1.     Revision History

Encrypting and Decrypting With Triple DES

The following code example shows the encryption and decryption process using 3DES with and without CBC. The key scheduler is set to populate both key schedules. The results of the operations are stored in the original data array.

#include "msp430xxxx.h"
#include "TI_DES.h"

int main( void )
{  
   des_ctx       dc1; // Key schedule structure
   unsigned char *cp;
   unsigned char data[]   = {0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30, 0xd8,
                             0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a};
   unsigned char key[8]   = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
   unsigned char key1[8]  = {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xfe};
   unsigned char key2[8]  = {0x01,0x23,0x45,0x67,0x89,0xab,0xdc,0xfe};
   cp = data;

   ///First 8 bytes of Data will be Encrypted then Decrypted
   TripleDES_ENC( &dc, cp, 1, key, key1, key2);   // 3DES Encrypt
   TripleDES_DEC( &dc, cp, 1, key, key1, key2);   // 3DES Decrypt

   /// All 16 Bytes of Data will be Encrypted then Decrypted with CBC
   TripleDES_ENC_CBC( &dc, cp, 2, key, key1, key2); // 3DES Encrypt
   TripleDES_DEC_CBC( &dc, cp, 2, key, key1,  key2); // 3DES Decrypt

return 0;
}