Visual FoxPro
Visual FoxPro
RSA Encrypt with SHA-256 hash function and SHA-256 mask function
See more RSA Examples
How can this Javascript be duplicated using Chilkat?
function a(e, t) {
var r = s.pki.publicKeyFromPem(e)
, n = r.encrypt(t, "RSA-OAEP", {
md: s.md.sha256.create(),
mgf1: {
md: s.md.sha1.create()
}
});
return s.util.encode64(n)
}
Note: The OAEP padding uses random bytes in the padding, and therefore each time encryption happens, even using the same data and key, the result will be different -- but still valid. One should not expect to get the same output.
Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loPubkey
LOCAL loSbPem
LOCAL lnBCrlf
LOCAL lcOriginalData
LOCAL loCrypt
LOCAL loHashBytes
LOCAL loRsa
LOCAL lnBUsePrivateKey
LOCAL lcEncryptedStr
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loPubkey = CreateObject('Chilkat.PublicKey')
loSbPem = CreateObject('Chilkat.StringBuilder')
lnBCrlf = 1
loSbPem.AppendLine("-----BEGIN PUBLIC KEY-----",lnBCrlf)
loSbPem.AppendLine("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA33TqqLR3eeUmDtHS89qF",lnBCrlf)
loSbPem.AppendLine("3p4MP7Wfqt2Zjj3lZjLjjCGDvwr9cJNlNDiuKboODgUiT4ZdPWbOiMAfDcDzlOxA",lnBCrlf)
loSbPem.AppendLine("04DDnEFGAf+kDQiNSe2ZtqC7bnIc8+KSG/qOGQIVaay4Ucr6ovDkykO5Hxn7OU7s",lnBCrlf)
loSbPem.AppendLine("Jp9TP9H0JH8zMQA6YzijYH9LsupTerrY3U6zyihVEDXXOv08vBHk50BMFJbE9iwF",lnBCrlf)
loSbPem.AppendLine("wnxCsU5+UZUZYw87Uu0n4LPFS9BT8tUIvAfnRXIEWCha3KbFWmdZQZlyrFw0buUE",lnBCrlf)
loSbPem.AppendLine("f0YN3/Q0auBkdbDR/ES2PbgKTJdkjc/rEeM0TxvOUf7HuUNOhrtAVEN1D5uuxE1W",lnBCrlf)
loSbPem.AppendLine("SwIDAQAB",lnBCrlf)
loSbPem.AppendLine("-----END PUBLIC KEY-----",lnBCrlf)
* Load the public key object from the PEM.
lnSuccess = loPubkey.LoadFromString(loSbPem.GetAsString())
IF (lnSuccess = 0) THEN
? loPubkey.LastErrorText
RELEASE loPubkey
RELEASE loSbPem
CANCEL
ENDIF
lcOriginalData = "This is the original data to be SHA-256 hashed and RSA encrypted."
* First we SHA-256 hash the original data.
loCrypt = CreateObject('Chilkat.Crypt2')
loCrypt.HashAlgorithm = "SHA-256"
loHashBytes = loCrypt.HashString(lcOriginalData)
* Now to RSA encrypt using OAEP padding with SHA-256 for the mask function.
loRsa = CreateObject('Chilkat.Rsa')
loRsa.PkcsPadding = 0
loRsa.OaepHash = "SHA256"
loRsa.UsePublicKey(loPubkey)
loRsa.EncodingMode = "base64"
* Note: The OAEP padding uses random bytes in the padding, and therefore each time encryption happens,
* even using the same data and key, the result will be different -- but still valid. One should not expect
* to get the same output.
lnBUsePrivateKey = 0
lcEncryptedStr = loRsa.EncryptBytesENC(loHashBytes,lnBUsePrivateKey)
IF (loRsa.LastMethodSuccess = 0) THEN
? loRsa.LastErrorText
RELEASE loPubkey
RELEASE loSbPem
RELEASE loCrypt
RELEASE loRsa
CANCEL
ENDIF
? "Base64 RSA encrypted output: " + lcEncryptedStr
RELEASE loPubkey
RELEASE loSbPem
RELEASE loCrypt
RELEASE loRsa