Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
Blowfish Encryption to Match PHP's Mcrypt ExtensionDemonstrates how to match Blowfish encryption results with PHP's mcrypt extension. Please refer to this PHP (non-Chilkat) example for PHP Blowfish Encryption. The code here matches the PHP mcrypt results on that page.
CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int 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 PRINT 'Crypt component unlock failed' RETURN END -- Use "blowfish2" to get proper results: EXEC sp_OASetProperty @crypt, 'CryptAlgorithm', 'blowfish2' -- CipherMode may be "ecb" or "cbc" EXEC sp_OASetProperty @crypt, 'CipherMode', 'cbc' -- KeyLength (in bits) may be a number between 32 and 448. -- 128-bits is usually sufficient. The KeyLength must be a -- multiple of 8. EXEC sp_OASetProperty @crypt, 'KeyLength', 256 -- Pad with NULL bytes (PHP pads with NULL bytes) EXEC sp_OASetProperty @crypt, 'PaddingScheme', 3 -- 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' -- The blowfish algorithm uses a 64-bit block size, -- therefore the IV must be 8 bytes: DECLARE @ivAscii nvarchar(4000) SELECT @ivAscii = '12345678' EXEC sp_OAMethod @crypt, 'SetEncodedIV', NULL, @ivAscii, 'ascii' -- For 256-bit encryption, the key is 32 bytes: DECLARE @keyAscii nvarchar(4000) SELECT @keyAscii = '1234567890123456ABCDEFGHIJKLMNOP' EXEC sp_OAMethod @crypt, 'SetEncodedKey', NULL, @keyAscii, 'ascii' DECLARE @plainText nvarchar(4000) SELECT @plainText = 'The quick brown fox jumped over the lazy dog' DECLARE @cipherText nvarchar(4000) EXEC sp_OAMethod @crypt, 'EncryptStringENC', @cipherText OUT, @plainText PRINT @cipherText -- Output should be: -- 276855ca6c0d60f7d9708210440c1072e05d078e733b34b4198d609dc2fcc2f0c30926cdef3b6d52baf6e345aa03f83e -- Do 128-bit Blowfish encryption: EXEC sp_OASetProperty @crypt, 'KeyLength', 128 SELECT @keyAscii = '1234567890123456' EXEC sp_OAMethod @crypt, 'SetEncodedKey', NULL, @keyAscii, 'ascii' EXEC sp_OAMethod @crypt, 'EncryptStringENC', @cipherText OUT, @plainText PRINT @cipherText -- Output should be: -- d2b5abb73208aea3790621d028afcc74d8dd65fb9ea8e666444a72523f5ecca60df79a424e2c714fa6efbafcc40bdca0 END GO |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2008 Chilkat Software, Inc. All Rights Reserved.