Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
|
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.
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.