{"id":10116,"date":"2022-09-30T09:10:41","date_gmt":"2022-09-30T01:10:41","guid":{"rendered":"https:\/\/blog.ywdevops.cn\/?p=10116"},"modified":"2022-11-15T18:38:04","modified_gmt":"2022-11-15T10:38:04","slug":"go-20","status":"publish","type":"post","link":"https:\/\/blog.ywdevops.cn\/index.php\/2022\/09\/30\/go-20\/","title":{"rendered":"go\u8bed\u8a00\u4e4b\u5b57\u7b26\u4e32\u52a0\u5bc6"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u9879\u76ee\u4e2d\u5e38\u7528\u7684\u52a0\u89e3\u5bc6\u7684\u65b9\u5f0f\u4e09\u79cd:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u5bf9\u79f0\u52a0\u5bc6, \u52a0\u89e3\u5bc6\u90fd\u4f7f\u7528\u7684\u662f\u540c\u4e00\u4e2a\u5bc6\u94a5, \u5176\u4e2d\u7684\u4ee3\u8868\u5c31\u662f<code>AES<\/code><\/li><li>\u975e\u5bf9\u52a0\u89e3\u5bc6, \u52a0\u89e3\u5bc6\u4f7f\u7528\u4e0d\u540c\u7684\u5bc6\u94a5, \u5176\u4e2d\u7684\u4ee3\u8868\u5c31\u662f<code>RSA<\/code><\/li><li>\u7b7e\u540d\u7b97\u6cd5, \u5982<code>MD5<\/code>\u3001<code>SHA1<\/code>\u3001<code>HMAC<\/code>\u7b49, \u4e3b\u8981\u7528\u4e8e\u9a8c\u8bc1\uff0c\u9632\u6b62\u4fe1\u606f\u88ab\u4fee\u6539, \u5982\uff1a\u6587\u4ef6\u6821\u9a8c\u3001\u6570\u5b57\u7b7e\u540d\u3001\u9274\u6743\u534f\u8bae<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e00\u3001AES\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AES\uff1a\u9ad8\u7ea7\u52a0\u5bc6\u6807\u51c6\uff08Advanced Encryption Standard\uff09\uff0c\u53c8\u79f0Rijndael\u52a0\u5bc6\u6cd5\uff0c\u8fd9\u4e2a\u6807\u51c6\u7528\u6765\u66ff\u4ee3\u539f\u5148\u7684DES\uff0cAES\u52a0\u5bc6\u6570\u636e\u5757\u5206\u7ec4\u957f\u5ea6\u5fc5\u987b\u4e3a128bit(byte[16])\uff0c\u5bc6\u94a5\u957f\u5ea6\u53ef\u4ee5\u662f128bit(byte[16])\u3001192bit(byte[24])\u3001256bit(byte[32])\u4e2d\u7684\u4efb\u610f\u4e00\u4e2a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5757\uff1a\u5bf9\u660e\u6587\u8fdb\u884c\u52a0\u5bc6\u7684\u65f6\u5019\uff0c\u5148\u8981\u5c06\u660e\u6587\u6309\u7167128bit\u8fdb\u884c\u5212\u5206<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u586b\u5145\u65b9\u5f0f\uff1a\u56e0\u4e3a\u660e\u6587\u7684\u957f\u5ea6\u4e0d\u4e00\u5b9a\u603b\u662f128\u7684\u6574\u6570\u500d\uff0c\u6240\u4ee5\u8981\u8fdb\u884c\u8865\u4f4d\uff0c\u6211\u4eec\u8fd9\u91cc\u91c7\u7528\u7684\u662fPKCS7\u586b\u5145\u65b9\u5f0f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>AES<\/code>\u5b9e\u73b0\u7684\u65b9\u5f0f\u591a\u6837, \u5176\u4e2d\u5305\u62ec<code>ECB<\/code>\u3001<code>CBC<\/code>\u3001CTR\u3001<code>CFB<\/code>\u3001<code>OFB<\/code>\u7b49<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u7535\u7801\u672c\u6a21\u5f0f\uff08Electronic&nbsp;Codebook&nbsp;Book&nbsp;(ECB))\uff1a\u5c06\u660e\u6587\u5206\u7ec4\u52a0\u5bc6\u4e4b\u540e\u7684\u7ed3\u679c\u76f4\u63a5\u79f0\u4e3a\u5bc6\u6587\u5206\u7ec4<\/li><li>\u5bc6\u7801\u5206\u7ec4\u94fe\u63a5\u6a21\u5f0f\uff08Cipher&nbsp;Block&nbsp;Chaining&nbsp;(CBC)\uff09\uff1a\u5c06\u660e\u6587\u5206\u7ec4\u4e0e\u524d\u4e00\u4e2a\u5bc6\u6587\u5206\u7ec4\u8fdb\u884cXOR\u8fd0\u7b97\uff0c\u7136\u540e\u518d\u8fdb\u884c\u52a0\u5bc6\u3002\u6bcf\u4e2a\u5206\u7ec4\u7684\u52a0\u89e3\u5bc6\u90fd\u4f9d\u8d56\u4e8e\u524d\u4e00\u4e2a\u5206\u7ec4\u3002\u800c\u7b2c\u4e00\u4e2a\u5206\u7ec4\u6ca1\u6709\u524d\u4e00\u4e2a\u5206\u7ec4\uff0c\u56e0\u6b64\u9700\u8981\u4e00\u4e2a\u521d\u59cb\u5316\u5411\u91cf<\/li><li>\u8ba1\u7b97\u5668\u6a21\u5f0f\uff08Counter&nbsp;(CTR)\uff09<\/li><li>\u5bc6\u7801\u53cd\u9988\u6a21\u5f0f\uff08Cipher&nbsp;FeedBack&nbsp;(CFB)\uff09\uff1a\u524d\u4e00\u4e2a\u5bc6\u6587\u5206\u7ec4\u4f1a\u88ab\u9001\u56de\u5230\u5bc6\u7801\u7b97\u6cd5\u7684\u8f93\u5165\u7aef<\/li><li>\u8f93\u51fa\u53cd\u9988\u6a21\u5f0f\uff08Output&nbsp;FeedBack&nbsp;(OFB)\uff09<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">\u52a0\u5bc6\u6a21\u5f0f<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5bf9\u5e94\u52a0\u89e3\u5bc6\u65b9\u6cd5<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">CBC<\/td><td class=\"has-text-align-center\" data-align=\"center\">NewCBCDecrypter, NewCBCEncrypter<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">CTR<\/td><td class=\"has-text-align-center\" data-align=\"center\">NewCTR<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">CFB<\/td><td class=\"has-text-align-center\" data-align=\"center\">NewCFBDecrypter, NewCFBEncrypter<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">OFB<\/td><td class=\"has-text-align-center\" data-align=\"center\">NewOFB<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001CBC\u6a21\u5f0f\uff0c\u6700\u5e38\u89c1\u7684\u4f7f\u7528\u65b9\u5f0f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package main\n\nimport (\n\t\"bytes\"\n\t\"crypto\/aes\"\n\t\"crypto\/cipher\"\n\t\"encoding\/base64\"\n\t\"fmt\"\n)\n\nfunc main() {\n\tstr := \"hello world\"\n\t\/\/key\u7684\u957f\u5ea6\u53ef\u662f16\u4f4d\u300124\u4f4d\u300132\u4f4d\u4e2d\u7684\u4e00\u4e2a\n\tkey := \"1235456789012f4D8888888823122234\"\n\tfmt.Println(\"\u539f\u5b57\u7b26\u4e32\u5185\u5bb9\uff1a\", str)\n\tencryptCode := AesEncrypt(str, key)\n\tfmt.Println(\"\u52a0\u5bc6\u540e\u7684\u5bc6\u6587\uff1a\", encryptCode)\n\tdecryptCode := AesDecrypt(encryptCode, key)\n\tfmt.Println(\"\u89e3\u5bc6\u7ed3\u679c\uff1a\", decryptCode)\n}\nfunc AesEncrypt(str string, key string) string {\n\t\/\/ \u8f6c\u6210\u5b57\u8282\u6570\u7ec4\n\tstrData := &#91;]byte(str)\n\tk := &#91;]byte(key)\n\t\/\/ \u5206\u7ec4\u79d8\u94a5\n\t\/\/ NewCipher\u8be5\u51fd\u6570\u9650\u5236\u4e86\u8f93\u5165k\u7684\u957f\u5ea6\u5fc5\u987b\u4e3a16, 24\u6216\u800532\n\tblock, _ := aes.NewCipher(k)\n\t\/\/ \u83b7\u53d6\u79d8\u94a5\u5757\u7684\u957f\u5ea6\n\tblockSize := block.BlockSize()\n\t\/\/ \u8865\u5168\u7801\n\tstrData = PKCS7Padding(strData, blockSize)\n\t\/\/ \u52a0\u5bc6\u6a21\u5f0f\n\tblockMode := cipher.NewCBCEncrypter(block, k&#91;:blockSize])\n\t\/\/ \u521b\u5efa\u6570\u7ec4\n\tcryted := make(&#91;]byte, len(strData))\n\t\/\/ \u52a0\u5bc6\n\tblockMode.CryptBlocks(cryted, strData)\n\treturn base64.StdEncoding.EncodeToString(cryted)\n}\nfunc AesDecrypt(cryted string, key string) string {\n\t\/\/ \u8f6c\u6210\u5b57\u8282\u6570\u7ec4\n\tcrytedByte, _ := base64.StdEncoding.DecodeString(cryted)\n\tk := &#91;]byte(key)\n\t\/\/ \u5206\u7ec4\u79d8\u94a5\n\tblock, _ := aes.NewCipher(k)\n\t\/\/ \u83b7\u53d6\u79d8\u94a5\u5757\u7684\u957f\u5ea6\n\tblockSize := block.BlockSize()\n\t\/\/ \u52a0\u5bc6\u6a21\u5f0f\n\tblockMode := cipher.NewCBCDecrypter(block, k&#91;:blockSize])\n\t\/\/ \u521b\u5efa\u6570\u7ec4\n\tstr := make(&#91;]byte, len(crytedByte))\n\t\/\/ \u89e3\u5bc6\n\tblockMode.CryptBlocks(str, crytedByte)\n\t\/\/ \u53bb\u8865\u5168\u7801\n\tstr = PKCS7UnPadding(str)\n\treturn string(str)\n}\n\n\/\/\u8865\u7801\n\/\/AES\u52a0\u5bc6\u6570\u636e\u5757\u5206\u7ec4\u957f\u5ea6\u5fc5\u987b\u4e3a128bit(byte&#91;16])\uff0c\u5bc6\u94a5\u957f\u5ea6\u53ef\u4ee5\u662f128bit(byte&#91;16])\u3001192bit(byte&#91;24])\u3001256bit(byte&#91;32])\u4e2d\u7684\u4efb\u610f\u4e00\u4e2a\u3002\nfunc PKCS7Padding(ciphertext &#91;]byte, blocksize int) &#91;]byte {\n\tpadding := blocksize - len(ciphertext)%blocksize\n\tpadtext := bytes.Repeat(&#91;]byte{byte(padding)}, padding)\n\treturn append(ciphertext, padtext...)\n}\n\n\/\/\u53bb\u7801\nfunc PKCS7UnPadding(strData &#91;]byte) &#91;]byte {\n\tlength := len(strData)\n\tunpadding := int(strData&#91;length-1])\n\treturn strData&#91;:(length - unpadding)]\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"103\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/14-3.png\" alt=\"\" class=\"wp-image-10123\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/14-3.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/14-3-300x44.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/14-3-600x87.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e8c\u3001\u7b7e\u540d\u7b97\u6cd5\u65b9\u5f0f\u52a0\u5bc6\u5b57\u7b26\u4e32<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001sha256\u52a0\u5bc6\u5b57\u7b26\u4e32<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"277\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/15-4.png\" alt=\"\" class=\"wp-image-10125\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/15-4.png 706w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/15-4-300x118.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/15-4-600x235.png 600w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"725\" height=\"94\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/16-2.png\" alt=\"\" class=\"wp-image-10127\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/16-2.png 725w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/16-2-300x39.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/16-2-600x78.png 600w\" sizes=\"auto, (max-width: 725px) 100vw, 725px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u901a\u8fc7sha256\u52a0\u5bc6\u6587\u4ef6\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"451\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/1-5.png\" alt=\"\" class=\"wp-image-10129\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/1-5.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/1-5-300x191.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/1-5-600x383.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"94\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/2-5.png\" alt=\"\" class=\"wp-image-10130\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/2-5.png 712w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/2-5-300x40.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/2-5-600x79.png 600w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u901a\u8fc7md5\u65b9\u5f0f\u52a0\u5bc6\uff0c\u6709\u4e09\u79cd\u65b9\u5f0f\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"505\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/3-6.png\" alt=\"\" class=\"wp-image-10132\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/3-6.png 710w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/3-6-300x213.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/3-6-600x427.png 600w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"102\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/4-5.png\" alt=\"\" class=\"wp-image-10133\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/4-5.png 709w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/4-5-300x43.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/09\/4-5-600x86.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u6ce8\uff1amd5\u52a0\u5bc6\u65b9\u5f0f\u4e0d\u53ef\u9006\uff0c\u4e5f\u5c31\u8bf4\u53ef\u52a0\u5bc6\u4e0d\u53ef\u89e3\u5bc6\uff0c\u901a\u5e38\u7528\u4e8e\u6587\u4ef6\u5bf9\u6bd4\uff0csha256\u52a0\u5bc6\u65b9\u5f0f\u4e5f\u4e0d\u53ef\u9006\uff0c\u53ea\u80fd\u52a0\u5bc6\u65e0\u6cd5\u89e3\u5bc6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e09\u3001RSA\u65b9\u5f0f\u52a0\u5bc6<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u6267\u884c\u547d\u4ee4\u751f\u6210\u79c1\u94a5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openssl genrsa -out rsa_private_key.pem 1024<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u6839\u636e\u79c1\u94a5\u751f\u6210\u516c\u94a5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u5b8c\u6574\u7684\u52a0\u5bc6\u65b9\u5f0f\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package main\n\nimport (\n\t\"crypto\/rand\"\n\t\"crypto\/rsa\"\n\t\"crypto\/x509\"\n\t\"encoding\/base64\"\n\t\"encoding\/pem\"\n\t\"errors\"\n\t\"fmt\"\n)\n\n\/\/ \u79c1\u94a5\u751f\u6210,\u6587\u4ef6\u540d rsa_private_key.pem\n\/\/openssl genrsa -out rsa_private_key.pem 1024\n\/\/\u5c06\u79c1\u94a5\u8f6c\u6362\u4e3a\u5b57\u8282\u5207\u7247\nvar privateKey = &#91;]byte(`\n-----BEGIN RSA PRIVATE KEY-----\nMIICWwIBAAKBgQC2cn5r0HpZ+Q2GFegNCHjbwJGkeE\/h8aKgIXCndAeqRHy\/RdR6\nnkJfZB321EDsAFcCa3kRKPMKndAVbpyASLZpcl9DwEuyKcFlK1GXVn6ADidYThYv\newasayxP10iLjHtebhPdgxqW63ElYpjKuFiiL54o526ADjzF8Jp5+8AR7wIDAQAB\nAoGADJmPnYaCTKBkjLQKmIvTPOnppQAiFCqJ3qEwlH\/w35NnQhZifC1dzBSv9RHn\ngeTsHWCqtcKsN6LThHe8RfetjMpdGPQqIpUrJJ\n1JvZHcyL+Ppn+YrLztOLB3UhU2ECQQDwt\/2yvXvH\/bKP\nQf3Mgz6Ll8ZFcBb2hLUE2DdMt9llIpUjPOyFDSY+kc6lbWpx4DI\/NYK9xHCtHt+a\n7x3aYBenAkEAwgny101dzYMli63Y7vbzTPQjSSvoC07\nXWR+qjt0ppTDMf6WLE3d5obmfAbSHCB8eQJAPYT4PG76rIDk2oHmCBdeq7RNQr\/D\nzprZ3HQZpeyyjYtKDChs1hAnPwRqiJKvCo1eqhLV6APFPClQwjrsKTw3rwJAa9EC\nulJURlgpNyDXKXL9+nrzufScXhbhnZ5t93SPKhKtw5BsKwSXZUkPfYa2Rk6JvMEs\nL4hBUvUJJEgh\/tEqeQJALros9McGUINUChqGKTk9qaDpFcBqS0Yx8JbHx53dS7S1\n8m5TZ3yCQvRVEtuIhfgTK6HBZ\/FwUCxUtdd0zm3Mow==\n-----END RSA PRIVATE KEY-----\n`)\n\n\/\/ \u516c\u94a5: \u6839\u636e\u79c1\u94a5\u751f\u6210,\u6587\u4ef6\u540d\uff1arsa_public_key.pem\n\/\/openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem\nvar publicKey = &#91;]byte(`\n-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSUAA4GNADCBiQKBgQC2cn5r0HpZ+Q2GFegNCHjbwJGk\neE\/h8aKgIXCndAeqRHy\/sAFcCa3kRKPMKndAVbpyASLZpcl9D\nwEuyKcFlK1GXVn6ADidYThYvewasayxP10iLjHtebhPdgxqW63ElYpjKuFiiL54o\n526ADjzF8Jp5+8AR7wIDAQAB\n-----END PUBLIC KEY-----\n`)\n\n\/\/ \u52a0\u5bc6\nfunc RsaEncrypt(origData &#91;]byte) (&#91;]byte, error) {\n\t\/\/\u89e3\u5bc6pem\u683c\u5f0f\u7684\u516c\u94a5\n\tblock, _ := pem.Decode(publicKey)\n\tif block == nil {\n\t\treturn nil, errors.New(\"public key error\")\n\t}\n\t\/\/ \u89e3\u6790\u516c\u94a5\n\tpubInterface, err := x509.ParsePKIXPublicKey(block.Bytes)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t\/\/ \u7c7b\u578b\u65ad\u8a00\n\tpub := pubInterface.(*rsa.PublicKey)\n\t\/\/\u52a0\u5bc6\n\treturn rsa.EncryptPKCS1v15(rand.Reader, pub, origData)\n}\n\n\/\/ \u89e3\u5bc6\nfunc RsaDecrypt(ciphertext &#91;]byte) (&#91;]byte, error) {\n\t\/\/\u89e3\u5bc6\n\tblock, _ := pem.Decode(privateKey)\n\tif block == nil {\n\t\treturn nil, errors.New(\"private key error!\")\n\t}\n\t\/\/\u89e3\u6790PKCS1\u683c\u5f0f\u7684\u79c1\u94a5\n\tpriv, err := x509.ParsePKCS1PrivateKey(block.Bytes)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t\/\/ \u89e3\u5bc6\n\treturn rsa.DecryptPKCS1v15(rand.Reader, priv, ciphertext)\n}\nfunc main() {\n\tdata, _ := RsaEncrypt(&#91;]byte(\"hello world\"))\n\tfmt.Println(\"\u52a0\u5bc6\u540e\u7684\u5185\u5bb9\",base64.StdEncoding.EncodeToString(data))\n\torigData, _ := RsaDecrypt(data)\n\tfmt.Println(\"\u89e3\u5bc6\u540e:\",string(origData))\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@VM-16-6-centos Goproject]# go run jiami.go \n\u52a0\u5bc6\u540e\u7684\u5185\u5bb9: RGw0d86Kr3VO\/8tHNnGKoSa6M38GXj\/r3rTo9Ca+6+vRRaam7JGRozrJ2nnfrtEm\/hQnY5HSJKv7Iy+nXac\/\/YcHfvIXh3DQJ9Kb+4LPbMthL2YxM4iVEsfyhRMlmk8BaoiZlfOkh9I0PTqDbWdqo07zzAKQ5JW+pLWDA+oXLrs=\n\u89e3\u5bc6\u540e: hello world<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9879\u76ee\u4e2d\u5e38\u7528\u7684\u52a0\u89e3\u5bc6\u7684\u65b9\u5f0f\u4e09\u79cd: \u5bf9\u79f0\u52a0\u5bc6, \u52a0\u89e3\u5bc6\u90fd\u4f7f\u7528\u7684\u662f\u540c\u4e00\u4e2a\u5bc6\u94a5, \u5176\u4e2d\u7684\u4ee3\u8868\u5c31\u662fAES \u975e\u5bf9\u52a0\u89e3\u5bc6,  [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":10118,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[111,23],"tags":[],"class_list":["post-10116","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-go","category-rong"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/10116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/comments?post=10116"}],"version-history":[{"count":15,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/10116\/revisions"}],"predecessor-version":[{"id":10690,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/10116\/revisions\/10690"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media\/10118"}],"wp:attachment":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media?parent=10116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/categories?post=10116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/tags?post=10116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}