CryptoSys API Library Manual

AES192_UpdateHex

Carries out the AES transformation function on a hexadecimal string according to the direction and mode set up by an earlier call to AES192_Init() or AES192_InitHex().

VBA/VB6 Syntax

Public Declare Function AES192_UpdateHex Lib "diCryptoSys.dll" (ByVal hContext As Long, ByVal strHexString As String) As Long

nRet = AES192_UpdateHex(hContext, strHexString)

C/C++ Syntax

long __stdcall AES192_UpdateHex(long hContext, char *szHexData);

Parameters

hContext
[in] handle to the AES context set up by an earlier call to AES192_Init() or AES192_InitHex().
szHexData
[in,out] containing input in hexadecimal format to be processed by the AES function and to receive the output.

Returns (VBA/C)

If successful, the return value is 0; otherwise it returns a non-zero error code.

.NET Equivalent

Aes192.Update Method (String)

Remarks

szHexString The length of the input string szHexString must be a multiple of 32 hex characters long (i.e. representing a multiple of the block size of 16 bytes). If not, an error code will be returned. Valid hexadecimal characters are [0-9A-Fa-f]. Note that the output overwrites the input. szHexString must be a variable that can receive the output, not a constant.

Example

This example carries out the third (I=2) [MOVS] Monte Carlo test in CBC encrypt mode (Ref: AES Candidate Algorithm Submissions, update 17 Feb 1998, file cbc_e_m.txt [RIJNVALS]).

    Dim nRet As Long
    Dim hContext As Long
    Dim sBlock As String
    Dim strHexKey As String
    Dim strIV As String
    Dim sNext As String
    Dim sLast As String
    Dim sCorrect As String
    Dim j As Integer
  
' cbc_e_m.txt
' KEYSIZE=192 I=2
' KEY=74D3414C2374367BFD4560CED3172B0E57571D88A2E13874
' IV=869C061BE9CFEAB5D285B0724A9A8970
' PT=C6FB25A188CF7F3F24B07896C0C76D90
' CT=9E58A52B3840DBE16E8063A18220FEE4

    
    strHexKey = "74D3414C2374367BFD4560CED3172B0E57571D88A2E13874"
    strIV = "869C061BE9CFEAB5D285B0724A9A8970"
    sBlock = "C6FB25A188CF7F3F24B07896C0C76D90"
    sCorrect = "9E58A52B3840DBE16E8063A18220FEE4"
    
    Debug.Print "AES Monte Carlo CBC Mode Encrypt:"
    Debug.Print "KY=" & strHexKey
    Debug.Print "IV=" & strIV
    Debug.Print "PT=" & sBlock
    
    hContext = AES192_InitHex(strHexKey, ENCRYPT, "CBC", strIV)
    If hContext = 0 Then
        MsgBox "Failed to set context", vbCritical
        Exit Function
    End If
    ' Do 10,000 times
    sNext = sBlock
    For j = 0 To 9999
        sBlock = sNext
        nRet = AES192_UpdateHex(hContext, sBlock)
        If j = 0 Then
            sNext = strIV
        Else
            sNext = sLast
        End If
        sLast = sBlock
    Next
    Debug.Print "CT=" & sBlock
    Debug.Print "OK=" & sCorrect
    nRet = AES192_Final(hContext)
    
    Debug.Assert (sCorrect = sBlock)

This should result in output as follows:

AES Monte Carlo CBC Mode Encrypt:
KY=74D3414C2374367BFD4560CED3172B0E57571D88A2E13874
IV=869C061BE9CFEAB5D285B0724A9A8970
PT=C6FB25A188CF7F3F24B07896C0C76D90
CT=9E58A52B3840DBE16E8063A18220FEE4
OK=9E58A52B3840DBE16E8063A18220FEE4

See Also

AES192_Init AES192_InitHex AES192_Update AES192_Final

[Contents] [Index]

[PREV: AES192_Update...]   [Contents]   [Index]   
   [NEXT: AES256_B64Mode...]

Copyright © 2001-24 D.I. Management Services Pty Ltd. All rights reserved. Generated 2024-01-07T07:42:00Z.