Encrypts/decrypts a hex-encoded string using specified block cipher algorithm and mode.
VB6/VBA
Debug.Print "Testing CIPHER_Hex ..." Dim nRet As Long Dim sPlain As String Dim sCipher As String Dim sCheck As String Dim sKey As String Dim sInitV As String Dim sCorrect As String sPlain = "5468697320736F6D652073616D706520636F6E74656E742E0808080808080808" ' T h i s _ s o m e _ s a m p e _ c o n t e n t .(+padding 8 x 08) sKey = "737C791F25EAD0E04629254352F7DC6291E5CB26917ADA32" sInitV = "B36B6BFB6231084E" sCorrect = "d76fd1178fbd02f84231f5c1d2a2f74a4159482964f675248254223daf9af8e4" ' Set output to be same length as input sCipher = String(Len(sPlain), " ") Debug.Print "KY=" & sKey Debug.Print "PT=" & sPlain ' Encrypt using strAlgAndMode nRet = CIPHER_Hex(ENCRYPT, sCipher, Len(sCipher), sPlain, sKey, sInitV, "tdea-cbc", 0) Debug.Print "CT=" & sCipher, nRet Debug.Print "OK=" & sCorrect ' Alternative using nOptions nRet = CIPHER_Hex(ENCRYPT, sCipher, Len(sCipher), sPlain, sKey, sInitV, "", PKI_BC_TDEA + PKI_MODE_CBC) Debug.Print "CT=" & sCipher, nRet Debug.Print "OK=" & sCorrect ' Decrypt using strAlgAndMode sCheck = String(Len(sCipher), " ") nRet = CIPHER_Hex(DECRYPT, sCheck, Len(sCheck), sCipher, sKey, sInitV, "tdea-cbc", 0) Debug.Print "P'=" & sCheck, nRet ' Alternative using nOptions sCheck = String(Len(sCipher), " ") nRet = CIPHER_Hex(DECRYPT, sCheck, Len(sCheck), sCipher, sKey, sInitV, "", PKI_BC_TDEA + PKI_MODE_CBC) Debug.Print "P'=" & sCheck, nRet
Output
Testing CIPHER_Hex ... KY=737C791F25EAD0E04629254352F7DC6291E5CB26917ADA32 PT=5468697320736F6D652073616D706520636F6E74656E742E0808080808080808 CT=D76FD1178FBD02F84231F5C1D2A2F74A4159482964F675248254223DAF9AF8E4 0 OK=d76fd1178fbd02f84231f5c1d2a2f74a4159482964f675248254223daf9af8e4 CT=D76FD1178FBD02F84231F5C1D2A2F74A4159482964F675248254223DAF9AF8E4 0 OK=d76fd1178fbd02f84231f5c1d2a2f74a4159482964f675248254223daf9af8e4 P'=5468697320736F6D652073616D706520636F6E74656E742E0808080808080808 0 P'=5468697320736F6D652073616D706520636F6E74656E742E0808080808080808 0
VB.NET
Console.WriteLine("Testing CIPHER_Hex ...")
Dim nRet As Integer
Dim sPlain As String
Dim sCipher As String
Dim sCheck As String
Dim sKey As String
Dim sInitV As String
Dim sCorrect As String
sPlain = "5468697320736F6D652073616D706520636F6E74656E742E0808080808080808"
' T h i s _ s o m e _ s a m p e _ c o n t e n t .(+padding 8 x 08)
sKey = "737C791F25EAD0E04629254352F7DC6291E5CB26917ADA32"
sInitV = "B36B6BFB6231084E"
sCorrect = "d76fd1178fbd02f84231f5c1d2a2f74a4159482964f675248254223daf9af8e4"
' Set output to be same length as input
''sCipher = String(Len(sPlain), " ")
Console.WriteLine("KY=" & sKey)
Console.WriteLine("PT=" & sPlain)
' Encrypt
sCipher = Cipher.Encrypt(sPlain, sKey, sInitV, CipherAlgorithm.Tdea, Mode.CBC)
Console.WriteLine("CT=" & sCipher & " " & nRet)
Console.WriteLine("OK=" & sCorrect)
' Decrypt
''sCheck = String(Len(sCipher), " ")
sCheck = Cipher.Decrypt(sCipher, sKey, sInitV, CipherAlgorithm.Tdea, Mode.CBC)
Console.WriteLine("P'=" & sCheck & " " & nRet)
[Contents]