DataFlex
DataFlex
RSA Encrypt RSA/ECB/OAEPWithSHA1AndMGF1Padding
See more RSA Examples
Demonstrates how to RSA encrypt using RSA/ECB/OAEPWithSHA1AndMGF1Padding. Also demonstrates RSA/ECB/OAEPWithSHA-256AndMGF1Padding. Both of these terms are from Java's JCE. Note: In this context, "ECB" doesn't actually mean anything. It's a symmetric cipher mode that doesn't apply (or make sense) in this context.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoRsa
Variant vPubkey
Handle hoPubkey
String sPlainText
Boolean iUsePrivateKey
String sEncryptedStr
2 Handle hoRsa2
Variant vPrivKey
Handle hoPrivKey
String sOriginalStr
String sTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatRsa)) To hoRsa
If (Not(IsComObjectCreated(hoRsa))) Begin
Send CreateComObject of hoRsa
End
// First load a public key object with a public key.
// In this case, we'll load it from a file.
Get Create (RefClass(cComChilkatPublicKey)) To hoPubkey
If (Not(IsComObjectCreated(hoPubkey))) Begin
Send CreateComObject of hoPubkey
End
Get ComLoadFromFile Of hoPubkey "qa_data/pem/rsa_public.pem" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPubkey To sTemp1
Showln sTemp1
Procedure_Return
End
// RSA encryption is limited to small amounts of data. The limit
// is typically a few hundred bytes and is based on the key size and
// padding (OAEP vs. PKCS1_5). RSA encryption is typically used for
// encrypting hashes or symmetric (bulk encryption algorithm) secret keys.
Move "Time is an illusion. Lunchtime doubly so." To sPlainText
// Import the public key to be used for encrypting.
Get pvComObject of hoPubkey to vPubkey
Get ComUsePublicKey Of hoRsa vPubkey To iSuccess
// To get OAEP padding, set the PkcsPadding property equal to False
Set ComPkcsPadding Of hoRsa To False
Set ComOaepHash Of hoRsa To "sha256"
// Indicate we'll want hex output
Set ComEncodingMode Of hoRsa To "hex"
// Encrypt..
Move False To iUsePrivateKey
Get ComEncryptStringENC Of hoRsa sPlainText iUsePrivateKey To sEncryptedStr
Showln sEncryptedStr
// -------------------------------------------------
// Now decrypt with the matching private key.
Get Create (RefClass(cComChilkatRsa)) To hoRsa2
If (Not(IsComObjectCreated(hoRsa2))) Begin
Send CreateComObject of hoRsa2
End
Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
If (Not(IsComObjectCreated(hoPrivKey))) Begin
Send CreateComObject of hoPrivKey
End
Get ComLoadEncryptedPem Of hoPrivKey "qa_data/pem/rsa_passwd.pem" "passwd" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPrivKey To sTemp1
Showln sTemp1
Procedure_Return
End
Get pvComObject of hoPrivKey to vPrivKey
Get ComUsePrivateKey Of hoRsa2 vPrivKey To iSuccess
// Make sure we have the same settings used for encryption.
Set ComPkcsPadding Of hoRsa2 To False
Set ComEncodingMode Of hoRsa2 To "hex"
Set ComOaepHash Of hoRsa2 To "sha256"
Get ComDecryptStringENC Of hoRsa2 sEncryptedStr True To sOriginalStr
Showln sOriginalStr
End_Procedure