Sample code for 30+ languages & platforms
SQL Server

UN/EDIFACT Syntax Level A Encoding/Decoding

See more Encryption Examples

Demonstrates the new "eda" encoding that can be used throughout Chilkat starting in v9.5.0.65.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    -- Note: Requires Chilkat v9.5.0.65 or greater.

    DECLARE @sb int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    DECLARE @success int
    EXEC sp_OAMethod @sb, 'Append', @success OUT, 'The 5 men of 223rd St'
    EXEC sp_OAMethod @sb, 'GetAsString', @sTmp0 OUT
    PRINT @sTmp0

    -- Encode the utf-8 byte representation of the string in the 
    -- UN/EDIFACT syntax level A character set.
    EXEC sp_OAMethod @sb, 'Encode', @success OUT, 'eda', 'utf-8'
    EXEC sp_OAMethod @sb, 'GetAsString', @sTmp0 OUT
    PRINT @sTmp0

    -- EDA Output should be: BTME027FCF6CFARFI94JT6.)F(14KJ2U

    -- Decode back to the original string.
    EXEC sp_OAMethod @sb, 'Decode', @success OUT, 'eda', 'utf-8'
    EXEC sp_OAMethod @sb, 'GetAsString', @sTmp0 OUT
    PRINT @sTmp0

    PRINT '----'

    -- The following requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    -- The "eda" encoding can be used anywhere within Chilkat.
    -- For example, with the Crypt2 API
    DECLARE @crypt int
    EXEC @hr = sp_OACreate 'Chilkat.Crypt2', @crypt OUT

    EXEC sp_OASetProperty @crypt, 'CryptAlgorithm', 'aes'
    EXEC sp_OASetProperty @crypt, 'CipherMode', 'cbc'
    EXEC sp_OASetProperty @crypt, 'KeyLength', 256
    EXEC sp_OASetProperty @crypt, 'EncodingMode', 'eda'

    DECLARE @ivHex nvarchar(4000)
    SELECT @ivHex = '000102030405060708090A0B0C0D0E0F'
    EXEC sp_OAMethod @crypt, 'SetEncodedIV', NULL, @ivHex, 'hex'
    DECLARE @keyHex nvarchar(4000)
    SELECT @keyHex = '000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F'
    EXEC sp_OAMethod @crypt, 'SetEncodedKey', NULL, @keyHex, 'hex'

    DECLARE @encStr nvarchar(4000)
    EXEC sp_OAMethod @crypt, 'EncryptStringENC', @encStr OUT, 'The quick brown fox jumps over the lazy dog.'
    -- The output is UN/EDIFACT syntax level A 

    PRINT @encStr

    -- Now decrypt:
    DECLARE @decStr nvarchar(4000)
    EXEC sp_OAMethod @crypt, 'DecryptStringENC', @decStr OUT, @encStr

    PRINT @decStr

    EXEC @hr = sp_OADestroy @sb
    EXEC @hr = sp_OADestroy @crypt


END
GO