Sample code for 30+ languages & platforms
PureBasic

RSA Encrypt with Modulus and Exponent

See more RSA Examples

Demonstrates how to RSA encrypt with a given modulus and exponent.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkXml.pb"
IncludeFile "CkPublicKey.pb"
IncludeFile "CkRsa.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    rsa.i = CkRsa::ckCreate()
    If rsa.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Assuming you already have a base64 modulus and exponent,
    ; wrap it in XML like this:
    modulus.s = "qMBRpdYrAy5aMmo31NErUizh5sbweguSmh4wlK6uJEIDl+kwTlROnE34KOFExeTbJSX0WygPi+vWl0yNq7buIMUKpytossAAWut5khO3CQJxTk7G2gnEPNUUXHiExGgNrLzcSLv8YIlfVALhoRWyC67KOL+a+3taNq3h+BHeWhM="
    exponent.s = "AQAB"

    xml.i = CkXml::ckCreate()
    If xml.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkXml::setCkTag(xml, "RSAPublicKey")
    CkXml::ckNewChild2(xml,"Modulus",modulus)
    CkXml::ckNewChild2(xml,"Exponent",exponent)

    pubKey.i = CkPublicKey::ckCreate()
    If pubKey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkPublicKey::ckLoadFromString(pubKey,xml)
    If success = 0
        Debug CkPublicKey::ckLastErrorText(pubKey)
        CkRsa::ckDispose(rsa)
        CkXml::ckDispose(xml)
        CkPublicKey::ckDispose(pubKey)
        ProcedureReturn
    EndIf

    success = CkRsa::ckUsePublicKey(rsa,pubKey)
    If success = 0
        Debug CkRsa::ckLastErrorText(rsa)
        CkRsa::ckDispose(rsa)
        CkXml::ckDispose(xml)
        CkPublicKey::ckDispose(pubKey)
        ProcedureReturn
    EndIf

    usePrivateKey.i = 0
    plainText.s = "message in a bottle"

    CkRsa::setCkEncodingMode(rsa, "base64")
    encryptedStrBase64.s = CkRsa::ckEncryptStringENC(rsa,plainText,usePrivateKey)
    Debug encryptedStrBase64


    CkRsa::ckDispose(rsa)
    CkXml::ckDispose(xml)
    CkPublicKey::ckDispose(pubKey)


    ProcedureReturn
EndProcedure