{"id":23687,"date":"2024-03-16T01:50:44","date_gmt":"2024-03-16T01:50:44","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/"},"modified":"2024-03-22T01:52:32","modified_gmt":"2024-03-22T01:52:32","slug":"how-to-implement-rsa-encryption-in-golang","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/","title":{"rendered":"How to implement RSA encryption in Golang?"},"content":{"rendered":"<p>In Golang, you can use the crypto\/rsa package to implement RSA encryption. Here is a simple example code:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">package<\/span> main\r\n\r\n<span class=\"hljs-keyword\">import<\/span> (\r\n\t<span class=\"hljs-string\">\"crypto\/rand\"<\/span>\r\n\t<span class=\"hljs-string\">\"crypto\/rsa\"<\/span>\r\n\t<span class=\"hljs-string\">\"crypto\/x509\"<\/span>\r\n\t<span class=\"hljs-string\">\"encoding\/pem\"<\/span>\r\n\t<span class=\"hljs-string\">\"fmt\"<\/span>\r\n)\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span><\/span> {\r\n\t<span class=\"hljs-comment\">\/\/ \u751f\u6210RSA\u5bc6\u94a5\u5bf9<\/span>\r\n\tprivateKey, err := rsa.GenerateKey(rand.Reader, <span class=\"hljs-number\">2048<\/span>)\r\n\t<span class=\"hljs-keyword\">if<\/span> err != <span class=\"hljs-literal\">nil<\/span> {\r\n\t\tfmt.Println(<span class=\"hljs-string\">\"Failed to generate RSA key pair:\"<\/span>, err)\r\n\t\t<span class=\"hljs-keyword\">return<\/span>\r\n\t}\r\n\r\n\t<span class=\"hljs-comment\">\/\/ \u5c06\u79c1\u94a5\u4fdd\u5b58\u4e3aPEM\u683c\u5f0f<\/span>\r\n\tprivateKeyPem := &amp;pem.Block{\r\n\t\tType:  <span class=\"hljs-string\">\"RSA PRIVATE KEY\"<\/span>,\r\n\t\tBytes: x509.MarshalPKCS1PrivateKey(privateKey),\r\n\t}\r\n\tprivateKeyPemBytes := pem.EncodeToMemory(privateKeyPem)\r\n\tfmt.Println(<span class=\"hljs-string\">\"Private key (PEM format):\"<\/span>)\r\n\tfmt.Println(<span class=\"hljs-type\">string<\/span>(privateKeyPemBytes))\r\n\r\n\t<span class=\"hljs-comment\">\/\/ \u5c06\u516c\u94a5\u4fdd\u5b58\u4e3aPEM\u683c\u5f0f<\/span>\r\n\tpublicKey := &amp;privateKey.PublicKey\r\n\tpublicKeyDer, err := x509.MarshalPKIXPublicKey(publicKey)\r\n\t<span class=\"hljs-keyword\">if<\/span> err != <span class=\"hljs-literal\">nil<\/span> {\r\n\t\tfmt.Println(<span class=\"hljs-string\">\"Failed to convert public key to DER format:\"<\/span>, err)\r\n\t\t<span class=\"hljs-keyword\">return<\/span>\r\n\t}\r\n\tpublicKeyPem := &amp;pem.Block{\r\n\t\tType:  <span class=\"hljs-string\">\"PUBLIC KEY\"<\/span>,\r\n\t\tBytes: publicKeyDer,\r\n\t}\r\n\tpublicKeyPemBytes := pem.EncodeToMemory(publicKeyPem)\r\n\tfmt.Println(<span class=\"hljs-string\">\"Public key (PEM format):\"<\/span>)\r\n\tfmt.Println(<span class=\"hljs-type\">string<\/span>(publicKeyPemBytes))\r\n\r\n\t<span class=\"hljs-comment\">\/\/ \u52a0\u5bc6\u6570\u636e<\/span>\r\n\tplainText := []<span class=\"hljs-type\">byte<\/span>(<span class=\"hljs-string\">\"Hello, RSA encryption!\"<\/span>)\r\n\tcipherText, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey, plainText)\r\n\t<span class=\"hljs-keyword\">if<\/span> err != <span class=\"hljs-literal\">nil<\/span> {\r\n\t\tfmt.Println(<span class=\"hljs-string\">\"Failed to encrypt data:\"<\/span>, err)\r\n\t\t<span class=\"hljs-keyword\">return<\/span>\r\n\t}\r\n\tfmt.Println(<span class=\"hljs-string\">\"Cipher text:\"<\/span>)\r\n\tfmt.Println(cipherText)\r\n\r\n\t<span class=\"hljs-comment\">\/\/ \u89e3\u5bc6\u6570\u636e<\/span>\r\n\tdecryptedText, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, cipherText)\r\n\t<span class=\"hljs-keyword\">if<\/span> err != <span class=\"hljs-literal\">nil<\/span> {\r\n\t\tfmt.Println(<span class=\"hljs-string\">\"Failed to decrypt data:\"<\/span>, err)\r\n\t\t<span class=\"hljs-keyword\">return<\/span>\r\n\t}\r\n\tfmt.Println(<span class=\"hljs-string\">\"Decrypted text:\"<\/span>)\r\n\tfmt.Println(<span class=\"hljs-type\">string<\/span>(decryptedText))\r\n}\r\n<\/code><\/pre>\n<p>In the example code above, a 2048-bit RSA key pair is first generated. The private key is then saved in PEM format and printed out. Next, the public key is saved in PEM format and printed out as well.<\/p>\n<p>Next, encrypt the data using the public key and output the encrypted ciphertext. Finally, decrypt the ciphertext using the private key and output the decrypted plaintext.<\/p>\n<p>Please be sure to securely store your private key to prevent it from being leaked in practical applications.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Golang, you can use the crypto\/rsa package to implement RSA encryption. Here is a simple example code: package main import ( &#8220;crypto\/rand&#8221; &#8220;crypto\/rsa&#8221; &#8220;crypto\/x509&#8221; &#8220;encoding\/pem&#8221; &#8220;fmt&#8221; ) func main() { \/\/ \u751f\u6210RSA\u5bc6\u94a5\u5bf9 privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { fmt.Println(&#8220;Failed to generate RSA key pair:&#8221;, err) return } \/\/ \u5c06\u79c1\u94a5\u4fdd\u5b58\u4e3aPEM\u683c\u5f0f privateKeyPem [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-23687","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to implement RSA encryption in Golang? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to implement RSA encryption in Golang?\" \/>\n<meta property=\"og:description\" content=\"In Golang, you can use the crypto\/rsa package to implement RSA encryption. Here is a simple example code: package main import ( &quot;crypto\/rand&quot; &quot;crypto\/rsa&quot; &quot;crypto\/x509&quot; &quot;encoding\/pem&quot; &quot;fmt&quot; ) func main() { \/\/ \u751f\u6210RSA\u5bc6\u94a5\u5bf9 privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { fmt.Println(&quot;Failed to generate RSA key pair:&quot;, err) return } \/\/ \u5c06\u79c1\u94a5\u4fdd\u5b58\u4e3aPEM\u683c\u5f0f privateKeyPem [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T01:50:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T01:52:32+00:00\" \/>\n<meta name=\"author\" content=\"Olivia Parker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Olivia Parker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/\"},\"author\":{\"name\":\"Olivia Parker\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\"},\"headline\":\"How to implement RSA encryption in Golang?\",\"datePublished\":\"2024-03-16T01:50:44+00:00\",\"dateModified\":\"2024-03-22T01:52:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/\"},\"wordCount\":109,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/\",\"name\":\"How to implement RSA encryption in Golang? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T01:50:44+00:00\",\"dateModified\":\"2024-03-22T01:52:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to implement RSA encryption in Golang?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\",\"name\":\"Olivia Parker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"caption\":\"Olivia Parker\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to implement RSA encryption in Golang? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/","og_locale":"en_US","og_type":"article","og_title":"How to implement RSA encryption in Golang?","og_description":"In Golang, you can use the crypto\/rsa package to implement RSA encryption. Here is a simple example code: package main import ( \"crypto\/rand\" \"crypto\/rsa\" \"crypto\/x509\" \"encoding\/pem\" \"fmt\" ) func main() { \/\/ \u751f\u6210RSA\u5bc6\u94a5\u5bf9 privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { fmt.Println(\"Failed to generate RSA key pair:\", err) return } \/\/ \u5c06\u79c1\u94a5\u4fdd\u5b58\u4e3aPEM\u683c\u5f0f privateKeyPem [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T01:50:44+00:00","article_modified_time":"2024-03-22T01:52:32+00:00","author":"Olivia Parker","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Olivia Parker","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/"},"author":{"name":"Olivia Parker","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9"},"headline":"How to implement RSA encryption in Golang?","datePublished":"2024-03-16T01:50:44+00:00","dateModified":"2024-03-22T01:52:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/"},"wordCount":109,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/","name":"How to implement RSA encryption in Golang? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T01:50:44+00:00","dateModified":"2024-03-22T01:52:32+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-rsa-encryption-in-golang\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to implement RSA encryption in Golang?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9","name":"Olivia Parker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","caption":"Olivia Parker"},"url":"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/23687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=23687"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/23687\/revisions"}],"predecessor-version":[{"id":57678,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/23687\/revisions\/57678"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=23687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=23687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=23687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}