SQL Server Stored Procedure Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

SQL Server
Stored Procedure Examples

Quick Start
Encryption
File Access
IMAP
POP3
SMTP
Email Object
DKIM / DomainKey
FTP
HTML Conversion
HTTP
MHT
MIME
NTLM
RSA
Diffie-Hellman
DSA
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
String
Tar
Upload
XML
XMP
Zip

Amazon S3
Bz2
CSV
FileAccess
Byte Array
RSS
Atom
Self-Extractor

PBES2 Password-Based Encryption (PBE)

Demonstrates how to implement password-based encryption according to the PKCS #5 v2.0: Password-Based Cryptography Standard (published by RSA Laboratories). This example uses PBES2, which ise based on the PBKDF2 function and an underlying block cipher such as RC2, DES, etc.

Download Chilkat Crypt ActiveX

CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @crypt int
    EXEC @hr = sp_OACreate 'Chilkat.Crypt2', @crypt OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    DECLARE @success int

    EXEC sp_OAMethod @crypt, 'UnlockComponent', @success OUT, 'Anything for 30-day trial'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @crypt, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    --  Set properties for PBES2 encryption:

    EXEC sp_OASetProperty @crypt, 'CryptAlgorithm', 'pbes2'
    EXEC sp_OASetProperty @crypt, 'PbesPassword', 'mySecretPassword'

    --  Set the underlying PBE algorithm (and key length):
    EXEC sp_OASetProperty @crypt, 'PbesAlgorithm', 'rc2'
    EXEC sp_OASetProperty @crypt, 'KeyLength', 128
    --  Only required for the RC2 algorithm:
    EXEC sp_OASetProperty @crypt, 'Rc2EffectiveKeyLength', 128

    --  By definition, the block encryption algorithm (RC2 or whichever
    --  was selected) will run in CBC mode.  Therefore, we need
    --  an IV.  The IV is equal in length to the block size of the
    --  algorithm.  RC2 has a block size of 8 bytes (regardless of
    --  key length), so set the IV to some value that is 8 bytes
    --  in length:
    EXEC sp_OAMethod @crypt, 'SetEncodedIV', NULL, '0000000000000000', 'hex'

    --  Give it some salt:
    EXEC sp_OAMethod @crypt, 'SetEncodedSalt', NULL, '0102030405060708', 'hex'

    --  A higher iteration count makes the algorithm more
    --  computationally expensive and therefore exhaustive
    --  searches (for breaking the encryption) is more difficult:
    EXEC sp_OASetProperty @crypt, 'IterationCount', 1024

    --  A hash algorithm needs to be set for PBES2:
    EXEC sp_OASetProperty @crypt, 'HashAlgorithm', 'sha1'

    --  Indicate that the encrypted bytes should be returned
    --  as a hex string:
    EXEC sp_OASetProperty @crypt, 'EncodingMode', 'hex'

    DECLARE @plainText nvarchar(4000)

    SELECT @plainText = 'To be encrypted.'

    DECLARE @encryptedText nvarchar(4000)

    EXEC sp_OAMethod @crypt, 'EncryptStringENC', @encryptedText OUT, @plainText


    PRINT @encryptedText

    --  Now decrypt:
    DECLARE @decryptedText nvarchar(4000)

    EXEC sp_OAMethod @crypt, 'DecryptStringENC', @decryptedText OUT, @encryptedText


    PRINT @decryptedText
END
GO

 

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.