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
(DataFlex) Encrypt/Decrypt using PFX to produce -----BEGIN PKCS7----- ... -----END PKCS7-----First we encrypt using a certificate + public key to produce output such as: -----BEGIN PKCS7----- MIIHPwYJKoZIhvcNAQcEoIIHMDCCBywC ... ... ... -----END PKCS7-----Then we decrypt using the cert + private key.
Use ChilkatAx-win32.pkg Procedure Test Handle hoCrypt Variant vCert Handle hoCert Boolean iSuccess String sToBeEncrypted String sEncryptedStr Handle hoSb String sOutStr Boolean iBCrlf Handle hoDecrypt String sDecryptedText String sTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt If (Not(IsComObjectCreated(hoCrypt))) Begin Send CreateComObject of hoCrypt End // Specify the encryption to be used. // "pki" indicates "Public Key Infrastructure" and will create a PKCS7 encrypted (enveloped) message. Set ComCryptAlgorithm Of hoCrypt To "pki" Set ComPkcs7CryptAlg Of hoCrypt To "aes" Set ComKeyLength Of hoCrypt To 128 Set ComOaepHash Of hoCrypt To "sha256" Set ComOaepPadding Of hoCrypt To True // A certificate is needed as the encryption key. // Althought the PFX contains the associated private key, we don't need it for encryption. // (A certificate usually contains the public key by default.) Get Create (RefClass(cComChilkatCert)) To hoCert If (Not(IsComObjectCreated(hoCert))) Begin Send CreateComObject of hoCert End Get ComLoadPfxFile Of hoCert "qa_data/pfx/cert_test123.pfx" "test123" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoCert To sTemp1 Showln sTemp1 Procedure_Return End // Tell the crypt object to use the certificate. Get pvComObject of hoCert to vCert Get ComSetEncryptCert Of hoCrypt vCert To iSuccess Move "This string is to be encrypted." To sToBeEncrypted // Get the result in multi-line BASE64 MIME format. Set ComEncodingMode Of hoCrypt To "base64_mime" Get ComEncryptStringENC Of hoCrypt sToBeEncrypted To sEncryptedStr If (iSuccess <> True) Begin Get ComLastErrorText Of hoCrypt To sTemp1 Showln sTemp1 Procedure_Return End // Make a "-----BEGIN PKCS7-----" ... "-----END PKCS7-----" sandwich... Get Create (RefClass(cComChilkatStringBuilder)) To hoSb If (Not(IsComObjectCreated(hoSb))) Begin Send CreateComObject of hoSb End Get ComAppendLine Of hoSb "-----BEGIN PKCS7-----" True To iSuccess Get ComAppend Of hoSb sEncryptedStr To iSuccess Get ComAppendLine Of hoSb "-----END PKCS7-----" True To iSuccess Get ComGetAsString Of hoSb To sOutStr Showln sOutStr // Sample output: // -----BEGIN PKCS7----- // MIICXAYJKoZIhvcNAQcDoIICTTCCAkkCAQAxggH0MIIB8AIBADCBrDCBlzELMAkGA1UEBhMCR0Ix // GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR // Q09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0 // aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEB6M1ZwZdZU7LrAIdurulmUwOAYJKoZIhvcNAQEHMCug // DzANBglghkgBZQMEAgEFAKEYMBYGCSqGSIb3DQEBCDAJBgUrDgMCGgUABIIBAK/BZG/iXJ8az7zL // 8EQ77mc+oDPQ4w1hyytK2ip4djkPVvTfYhcoDQ+G/DBU+urJfrVBi5H9gmpXwYyfKlyUxBVRVEJl // V/V5QQi4JmNTFbmgWh5tp9zDS98l6A2Va4Zs0Wy/owGLfvwitlxd1dsfVAV2hmBYS24BMpNcty5/ // 0atcKYmSou13G78ztTKdMy1tECgZy8kerMsPdDQbSxEZkT3KpQ8C5uEQqYF3bIVaeZzha/Ywieh/ // tvO0T4aAmeJufwkNdVECmU7kuhnNaVPXknFl7jeibTl6zA/VcJKBKcIYT9FRC7KjdooI8q+jtQ/V // k6RP4POaowkFg1QWRPEWeqIwTAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBAgQQEEFQduqeJqXQXzy4 // JpkoDoAgdldJDB9zEkpMpgr5/fR2iLvh5kC6BPfhOYjsawBY4Ok= // -----END PKCS7----- // ---------------------------------------------------------------------------------------- // Let's Decrypt the above string. // Start with what was produced above.. Send ComClear To hoSb Move True To iBCrlf Get ComAppendLine Of hoSb "-----BEGIN PKCS7-----" iBCrlf To iSuccess Get ComAppendLine Of hoSb "MIICXAYJKoZIhvcNAQcDoIICTTCCAkkCAQAxggH0MIIB8AIBADCBrDCBlzELMAkGA1UEBhMCR0Ix" iBCrlf To iSuccess Get ComAppendLine Of hoSb "GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR" iBCrlf To iSuccess Get ComAppendLine Of hoSb "Q09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0" iBCrlf To iSuccess Get ComAppendLine Of hoSb "aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEB6M1ZwZdZU7LrAIdurulmUwOAYJKoZIhvcNAQEHMCug" iBCrlf To iSuccess Get ComAppendLine Of hoSb "DzANBglghkgBZQMEAgEFAKEYMBYGCSqGSIb3DQEBCDAJBgUrDgMCGgUABIIBAK/BZG/iXJ8az7zL" iBCrlf To iSuccess Get ComAppendLine Of hoSb "8EQ77mc+oDPQ4w1hyytK2ip4djkPVvTfYhcoDQ+G/DBU+urJfrVBi5H9gmpXwYyfKlyUxBVRVEJl" iBCrlf To iSuccess Get ComAppendLine Of hoSb "V/V5QQi4JmNTFbmgWh5tp9zDS98l6A2Va4Zs0Wy/owGLfvwitlxd1dsfVAV2hmBYS24BMpNcty5/" iBCrlf To iSuccess Get ComAppendLine Of hoSb "0atcKYmSou13G78ztTKdMy1tECgZy8kerMsPdDQbSxEZkT3KpQ8C5uEQqYF3bIVaeZzha/Ywieh/" iBCrlf To iSuccess Get ComAppendLine Of hoSb "tvO0T4aAmeJufwkNdVECmU7kuhnNaVPXknFl7jeibTl6zA/VcJKBKcIYT9FRC7KjdooI8q+jtQ/V" iBCrlf To iSuccess Get ComAppendLine Of hoSb "k6RP4POaowkFg1QWRPEWeqIwTAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBAgQQEEFQduqeJqXQXzy4" iBCrlf To iSuccess Get ComAppendLine Of hoSb "JpkoDoAgdldJDB9zEkpMpgr5/fR2iLvh5kC6BPfhOYjsawBY4Ok=" iBCrlf To iSuccess Get ComAppendLine Of hoSb "-----END PKCS7-----" iBCrlf To iSuccess Get Create (RefClass(cComChilkatCrypt2)) To hoDecrypt If (Not(IsComObjectCreated(hoDecrypt))) Begin Send CreateComObject of hoDecrypt End Set ComCryptAlgorithm Of hoDecrypt To "pki" // Use the same cert + private key from the PFX above. // For decryption, we need the private key. Given that the certificate was loaded from a PFX, // we should already have it. Get pvComObject of hoCert to vCert Get ComSetDecryptCert Of hoDecrypt vCert To iSuccess Set ComEncodingMode Of hoDecrypt To "base64" Get ComGetBetween Of hoSb "-----BEGIN PKCS7-----" "-----END PKCS7-----" To sTemp1 Get ComDecryptStringENC Of hoDecrypt sTemp1 To sDecryptedText Showln sDecryptedText End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.