Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) RC2 Encryption and DecryptionRC2 encryption. The Chilkat encryption component supports RC2 encryption in both ECB (Electronic Cookbook) and CBC (Cipher-Block Chaining) modes. The key size may range from 8 bits to 1024 bits.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int -- This example assumes the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @crypt int -- Use "Chilkat_9_5_0.Crypt2" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Crypt2', @crypt OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- Set the encryption algorithm = "rc2" EXEC sp_OASetProperty @crypt, 'CryptAlgorithm', 'rc2' -- CipherMode may be "ecb" or "cbc" EXEC sp_OASetProperty @crypt, 'CipherMode', 'cbc' -- KeyLength may range from 8 bits to 1024 bits EXEC sp_OASetProperty @crypt, 'KeyLength', 128 -- RC2 also has an effective key length property -- which can also range from 8 bits to 1024 bits: EXEC sp_OASetProperty @crypt, 'Rc2EffectiveKeyLength', 128 -- The padding scheme determines the contents of the bytes -- that are added to pad the result to a multiple of the -- encryption algorithm's block size. RC2 has a block -- size of 8 bytes, so encrypted output is always -- a multiple of 8. EXEC sp_OASetProperty @crypt, 'PaddingScheme', 0 -- EncodingMode specifies the encoding of the output for -- encryption, and the input for decryption. -- It may be "hex", "url", "base64", or "quoted-printable". EXEC sp_OASetProperty @crypt, 'EncodingMode', 'hex' -- An initialization vector is required if using CBC mode. -- ECB mode does not use an IV. -- The length of the IV is equal to the algorithm's block size. -- It is NOT equal to the length of the key. DECLARE @ivHex nvarchar(4000) SELECT @ivHex = '0001020304050607' EXEC sp_OAMethod @crypt, 'SetEncodedIV', NULL, @ivHex, 'hex' -- The secret key must equal the size of the key. -- For 128-bit encryption, the binary secret key is 16 bytes. DECLARE @keyHex nvarchar(4000) SELECT @keyHex = '000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F' EXEC sp_OAMethod @crypt, 'SetEncodedKey', NULL, @keyHex, 'hex' -- Encrypt a string... -- The input string is 44 ANSI characters (i.e. 44 bytes), so -- the output should be 48 bytes (a multiple of 8). -- Because the output is a hex string, it should -- be 96 characters long (2 chars per byte). DECLARE @encStr nvarchar(4000) EXEC sp_OAMethod @crypt, 'EncryptStringENC', @encStr OUT, 'The quick brown fox jumps over the lazy dog.' PRINT @encStr -- Now decrypt: DECLARE @decStr nvarchar(4000) EXEC sp_OAMethod @crypt, 'DecryptStringENC', @decStr OUT, @encStr PRINT @decStr EXEC @hr = sp_OADestroy @crypt END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.