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) RSA Encrypt and Decrypt StringsSQL Server sample code to RSA public-key encrypt and decrypt strings using public and private keys.
-- 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) -- This example assumes the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @rsa int -- Use "Chilkat_9_5_0.Rsa" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Rsa', @rsa OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- This example also generates the public and private -- keys to be used in the RSA encryption. -- Normally, you would generate a key pair once, -- and distribute the public key to your partner. -- Anything encrypted with the public key can be -- decrypted with the private key. The reverse is -- also true: anything encrypted using the private -- key can be decrypted using the public key. -- Generate a 1024-bit key. Chilkat RSA supports -- key sizes ranging from 512 bits to 4096 bits. DECLARE @success int EXEC sp_OAMethod @rsa, 'GenerateKey', @success OUT, 1024 IF @success <> 1 BEGIN EXEC sp_OAGetProperty @rsa, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @rsa RETURN END -- Keys are exported in XML format: DECLARE @publicKey nvarchar(4000) EXEC sp_OAMethod @rsa, 'ExportPublicKey', @publicKey OUT DECLARE @privateKey nvarchar(4000) EXEC sp_OAMethod @rsa, 'ExportPrivateKey', @privateKey OUT DECLARE @plainText nvarchar(4000) SELECT @plainText = 'Encrypting and decrypting should be easy!' -- Start with a new RSA object to demonstrate that all we -- need are the keys previously exported: DECLARE @rsaEncryptor int -- Use "Chilkat_9_5_0.Rsa" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Rsa', @rsaEncryptor OUT -- Encrypted output is always binary. In this case, we want -- to encode the encrypted bytes in a printable string. -- Our choices are "hex", "base64", "url", "quoted-printable". EXEC sp_OASetProperty @rsaEncryptor, 'EncodingMode', 'hex' -- We'll encrypt with the public key and decrypt with the private -- key. It's also possible to do the reverse. EXEC sp_OAMethod @rsaEncryptor, 'ImportPublicKey', @success OUT, @publicKey DECLARE @usePrivateKey int SELECT @usePrivateKey = 0 DECLARE @encryptedStr nvarchar(4000) EXEC sp_OAMethod @rsaEncryptor, 'EncryptStringENC', @encryptedStr OUT, @plainText, @usePrivateKey PRINT @encryptedStr -- Now decrypt: DECLARE @rsaDecryptor int -- Use "Chilkat_9_5_0.Rsa" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Rsa', @rsaDecryptor OUT EXEC sp_OASetProperty @rsaDecryptor, 'EncodingMode', 'hex' EXEC sp_OAMethod @rsaDecryptor, 'ImportPrivateKey', @success OUT, @privateKey SELECT @usePrivateKey = 1 DECLARE @decryptedStr nvarchar(4000) EXEC sp_OAMethod @rsaDecryptor, 'DecryptStringENC', @decryptedStr OUT, @encryptedStr, @usePrivateKey PRINT @decryptedStr EXEC @hr = sp_OADestroy @rsa EXEC @hr = sp_OADestroy @rsaEncryptor EXEC @hr = sp_OADestroy @rsaDecryptor END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.