Sample code for 30+ languages & platforms
Tcl

Generate RSA Public/Private Key

See more RSA Examples

_LANGUAGE_ example code showing how to generate an RSA public/private key.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set rsa [new_CkRsa]

# Generate a 2048-bit key.  Chilkat RSA supports
# key sizes ranging from 512 bits to 8192 bits.
set privKey [new_CkPrivateKey]

set success [CkRsa_GenKey $rsa 2048 $privKey]
if {$success == 0} then {
    puts [CkRsa_lastErrorText $rsa]
    delete_CkRsa $rsa
    delete_CkPrivateKey $privKey
    exit
}

set pubKey [new_CkPublicKey]

CkPrivateKey_ToPublicKey $privKey $pubKey

puts [CkPrivateKey_getPkcs8Pem $privKey]

puts [CkPublicKey_getPem $pubKey 0]

# Sample output:

# -----BEGIN PRIVATE KEY-----
# MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD0SwWmX222gCpW
# ue75Q3VicOSXlTW0YNVksW8oGLS8x/SI5ZUqVMLIl2gsF1drEg2b+lvfeB7l2hwo
# UUCK0x2L2qv8hs4zrHmrrCi5xHHG7kpQAoi2PTodWvKvr9m7+n+nFcwOMrY0+qZM
# oYUg85yde3tWek5ouj4v1ZC9lbsozTrl2aIm/nD+o1PXg/V7CL2owbS+UG0iRz0C
# IYwn8hNEEe3/Uzw2oq7Gt37jOTYB21jX9RSgt0v90ifaQeXR6uiuuaJLRVunJXrd
# lJ9QvJh8xYuyEhJO5cChtn2AcSSxm417O4vJzBSHKKAn+EA/YIs74UsYTZojG5x/
# ptA3GDzhAgMBAAECggEBAIC4Vw3HEqQq/CQebJDivqNUIN7OPDIDI+2eoJdcDT+7
# jFnlvqdDai8PuFAjLGi6ZnldfbNOM9mhB10nEv8TJmpemmjBDz2jD6kpWXwoylqr
# jHSEIU0FDe4R0fZIjk3CPCjqD08b4W4g9CdEpEUsl8VTHzX90/rSx5mkylNa5fck
# xOf7V4W3L0OC+J0zKFiAQtI1abf+7x5rsnoi8sJ90v4wWWaXtMxHAZRLZxY2FtV3
# BbydbTqU+UC8T2+4ga+J549k9QomZ8zUhxe22jTBcKcIE+cGK5CLN8fJJ1GZWiB9
# JYOmeTat7N6SrpqdTsjqF2+Y6s5lt+B1yI6Fg2069MECgYEA/VYd3xZgqEjM1095
# zEce1eNujk+QGRfQv/9ToF8/jdJAvJQStagupIAHH0+iLnQGIZKLS0AxTJqlz0be
# r+0+8bs2whiuCvNF6U/pfslMUdlkOlY38lhdL3IqVOcf4douGEPI1BJlJraJFxea
# 49SeWJLY23Yb1j3yvCWTmBP6q8UCgYEA9tyQcRCRDis4V7NGwvWi8v3BBHf/lgo0
# ac+676DWqHco4cbu1ZVkyM5Y3rgsgX5APeqPhaXlivvv8LLhUSydUoquhdHlBeRi
# XxTBj4aNNRwBfC9x9keOaBBBhughwgrDcEnGL6/B/6mpXydY0El7DmGf1G5x46NY
# jUoqVa54Um0CgYAI8eN4HwgmqPtiltHMHq6+Cpu6tqB14ltijBdd0D8kOMpEXk4S
# z+9lq4eU2XD2hu44fT4h2BBljghQu0XdnFjenCegztJGXLSZOlMaQO1K7owVaznq
# eqg/pp5MBSUhCl0aSjprEoMzzLomcJTtenJk2jqB9TeiZumNLx54/iuZqQKBgDjp
# bq9yV07B7hJh9W1a/f8xOz+Rfq4TmjPOvVUjanmaRyWOHF/HOl4FHH30TeZoudzM
# Z9wy+/GH1bBTPRjexUJTUJrvYfJyza8H9Pvm1EUrOLhto8NYid856DF28Nlwa9BG
# Ydd6mKodbjvOsW4LksAlB5kNAVquvOqN76ajO4AdAoGBAMXWdg9VFObBklLTRs81
# LgtLd9brWpRUHYkH8Ctw2bgyHuel26HVghWWy7JxU308uWL6ZrSXv7Qlsw7iYYwP
# m8BwjxUTfwTpqHfIi5sjeL6IeNiUPesqyT4B7J7ssmzYf8bedwN7TsrrY+169Ud3
# tC1UNW1BQbHh4RnyusT93Z71
# -----END PRIVATE KEY-----
# 
# -----BEGIN PUBLIC KEY-----
# MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9EsFpl9ttoAqVrnu+UN1
# YnDkl5U1tGDVZLFvKBi0vMf0iOWVKlTCyJdoLBdXaxINm/pb33ge5docKFFAitMd
# i9qr/IbOM6x5q6woucRxxu5KUAKItj06HVryr6/Zu/p/pxXMDjK2NPqmTKGFIPOc
# nXt7VnpOaLo+L9WQvZW7KM065dmiJv5w/qNT14P1ewi9qMG0vlBtIkc9AiGMJ/IT
# RBHt/1M8NqKuxrd+4zk2AdtY1/UUoLdL/dIn2kHl0erorrmiS0VbpyV63ZSfULyY
# fMWLshISTuXAobZ9gHEksZuNezuLycwUhyigJ/hAP2CLO+FLGE2aIxucf6bQNxg8
# 4QIDAQAB
# -----END PUBLIC KEY-----

delete_CkRsa $rsa
delete_CkPrivateKey $privKey
delete_CkPublicKey $pubKey