Sample code for 30+ languages & platforms
Go

Encrypt with Chilkat, Decrypt with OpenSSL

See more OpenSSL Examples

Demonstrates how to RSA encrypt a string using Chilkat, and then shows the corresponding OpenSSL command to RSA decrypt. The OpenSSL command to decrypt is as follows:
openssl rsautl -decrypt -inkey VP_Private.pem -in rsa_encrypted.bin -out original.txt

Chilkat Go Downloads

Go
    success := false

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

    rsa := chilkat.NewRsa()

    // Note: RSA encryption uses the public key.  
    // RSA decryption uses the private key.
    // The reason is that the public key can be freely provided to anybody.  This allows anybody
    // to send an encrypted message to the private key owner, and only the private key owner 
    // can decrypt.
    key := chilkat.NewPublicKey()

    // Load an RSA public key from a PEM file:
    success = key.LoadFromFile("qa_data/pem/VP_Public.pem")
    if success == false {
        fmt.Println(key.LastErrorText())
        rsa.DisposeRsa()
        key.DisposePublicKey()
        return
    }

    // Load the public key into the RSA object.
    success = rsa.UsePublicKey(key)
    if success == false {
        fmt.Println(rsa.LastErrorText())
        rsa.DisposeRsa()
        key.DisposePublicKey()
        return
    }

    strToEncrypt := "00000000;XYZ2-3BHQ-ABCD-MMVV;6MY1-GHJK-9LRR;0"

    // The LittleEndian property is false by default, but it is set here
    // anyway to show that LittleEndian byte ordering is required for OpenSSL compatibility.
    rsa.SetLittleEndian(false)

    usePrivateKey := false
    var encryptedBytes []byte
    encryptedBytes = rsa.EncryptString(strToEncrypt,usePrivateKey)
    if rsa.LastMethodSuccess() == false {
        fmt.Println(rsa.LastErrorText())
        rsa.DisposeRsa()
        key.DisposePublicKey()
        return
    }

    // The OpenSSL command to decrypt would be this:
    // openssl rsautl -decrypt -inkey VP_Private.pem -in rsa_encrypted.bin -out original.txt

    fac := chilkat.NewFileAccess()
    success = fac.WriteEntireFile("qa_output/rsa_encrypted.bin",encryptedBytes)
    if success == false {
        fmt.Println(fac.LastErrorText())
        rsa.DisposeRsa()
        key.DisposePublicKey()
        fac.DisposeFileAccess()
        return
    }

    fmt.Println("RSA Encryption Succeeded.")

    rsa.DisposeRsa()
    key.DisposePublicKey()
    fac.DisposeFileAccess()