{"id":13486045,"url":"https://github.com/wumansgy/goEncrypt","last_synced_at":"2025-03-27T20:32:08.171Z","repository":{"id":41390222,"uuid":"155946937","full_name":"wumansgy/goEncrypt","owner":"wumansgy","description":"go语言封装的各种对称加密和非对称加密，可以直接使用，包括3重DES，AES的CBC和CTR模式，还有RSA非对称加密,ECC椭圆曲线的加密和数字签名","archived":false,"fork":false,"pushed_at":"2022-09-08T07:43:05.000Z","size":431,"stargazers_count":746,"open_issues_count":1,"forks_count":172,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-08-01T18:25:25.262Z","etag":null,"topics":["3des","aes","crypt","des","ecc","gocrypt","rsa"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wumansgy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-03T03:38:48.000Z","updated_at":"2024-08-01T02:48:30.000Z","dependencies_parsed_at":"2022-07-17T02:16:17.546Z","dependency_job_id":null,"html_url":"https://github.com/wumansgy/goEncrypt","commit_stats":null,"previous_names":["wumansgy/wmgocrypt"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wumansgy%2FgoEncrypt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wumansgy%2FgoEncrypt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wumansgy%2FgoEncrypt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wumansgy%2FgoEncrypt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wumansgy","download_url":"https://codeload.github.com/wumansgy/goEncrypt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222313559,"owners_count":16965322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3des","aes","crypt","des","ecc","gocrypt","rsa"],"created_at":"2024-07-31T18:00:37.676Z","updated_at":"2024-10-30T21:30:41.479Z","avatar_url":"https://github.com/wumansgy.png","language":"Go","funding_links":[],"categories":["Awesome","Go"],"sub_categories":[],"readme":"## goEncrypt\n\n[![](https://img.shields.io/badge/Auther-blog-blue.svg)](https://github.com/wumansgy)   [![](https://img.shields.io/badge/Open%20Source-Y-brightgreen.svg)](https://github.com/wumansgy)\n\ngo语言封装的各种对称加密和非对称加密，可以直接使用，包括3重DES，AES的CBC和CTR模式，还有RSA非对称加密\n\n下载到本地可以直接调用\n\n使用方法\n\n```\ngo get github.com/wumansgy/goEncrypt\n```\n\n然后下载到本地可以直接调用，包括了DES的CBC模式的加密解密（虽然DES早就被破解，但是可以参考使用），三重DES的加密解密（可以使用），AES的CBC模式和CTR模式（对称加密中常用的加密算法），非对称加密RSA的加密解密（比较常用的非对称加密算法），椭圆曲线加密算法（后面更新），还有哈希函数sha256，sha512的快速使用（MD5，SHA1已经在2004，2005年被陆续攻破，现在常用sha256和sha512）\n\n## 1.1DES的快速使用\n\n```go\n// des\nfunc main() {\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\tdesSecretKey := \"12345678\"\n\tbase64Text, err := des.DesCbcEncryptBase64([]byte(msg), []byte(desSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"DES模式加密后的base64密文为:\\n%s\\n\", base64Text)\n\tplaintext, err := des.DesCbcDecryptByBase64(base64Text, []byte(desSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"DES模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*DES模式加密后的base64密文为:\n\tkzott0GFh9Rg0rsg1X2RP/F4YQ0tOBe6NfKjmAqiDfUrgqcw1P8Dix6IWe07DS2kJ7RZinPynHyiG+xB3NTajXBog4ayohan\n\tDES模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n\thexText, err := des.DesCbcEncryptHex([]byte(msg), []byte(desSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"DES模式加密后的hex密文为:\\n%s\\n\", hexText)\n\tplaintext, err = des.DesCbcDecryptByHex(hexText, []byte(desSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"DES模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*DES模式加密后的hex密文为:\n\t933a2db7418587d460d2bb20d57d913ff178610d2d3817ba35f2a3980aa20df52b82a730d4ff038b1e8859ed3b0d2da427b4598a73f29c7ca21bec41dcd4da8d70688386b2a216a7\n\tDES模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n}\n```\n\n## 1.2三重DES的快速使用\n\n```go\n// triple_des\nfunc main() {\n\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\ttripleDesSecretKey := \"123456781234567812345678\"\n\tbase64Text, err := des.TripleDesEncryptBase64([]byte(msg), []byte(tripleDesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"三重DES模式加密后的base64密文为:\\n%s\\n\", base64Text)\n\tplaintext, err := des.TripleDesDecryptByBase64(base64Text, []byte(tripleDesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"三重DES模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*三重DES模式加密后的base64密文为:\n\tkzott0GFh9Rg0rsg1X2RP/F4YQ0tOBe6NfKjmAqiDfUrgqcw1P8Dix6IWe07DS2kJ7RZinPynHyiG+xB3NTajXBog4ayohan\n\t三重DES模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n\thexText, err := des.TripleDesEncryptHex([]byte(msg), []byte(tripleDesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"三重DES模式加密后的hex密文为:\\n%s\\n\", hexText)\n\tplaintext, err = des.TripleDesDecryptByHex(hexText, []byte(tripleDesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"三重DES模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*三重DES模式加密后的hex密文为:\n\t933a2db7418587d460d2bb20d57d913ff178610d2d3817ba35f2a3980aa20df52b82a730d4ff038b1e8859ed3b0d2da427b4598a73f29c7ca21bec41dcd4da8d70688386b2a216a7\n\t三重DES模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n}\n\n```\n\n\n## 2.1AES的CBC模式的快速使用\n\n```go\nfunc main() {\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\taesSecretKey := \"1234567812345678\"\n\tbase64Text, err := aes.AesCbcEncryptBase64([]byte(msg), []byte(aesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的CBC模式加密后的base64密文为:\\n%s\\n\", base64Text)\n\tplaintext, err := aes.AesCbcDecryptByBase64(base64Text, []byte(aesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的CBC模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*AES的CBC模式加密后的base64密文为:\n\tY8uCrLL8SavXyiUzpnU+Lmn4mODprYL/odSK3MVmGlseuftpJ6A6szrGl/bfDK18z+EkD7TXNI4WemUdvbHZCtSQ1OwexzDtDWcFETU2Ml8=\n\tAES的CBC模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n\thexText, err := aes.AesCbcEncryptHex([]byte(msg), []byte(aesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的CBC模式加密后的hex密文为:\\n%s\\n\", hexText)\n\tplaintext, err = aes.AesCbcDecryptByHex(hexText, []byte(aesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的CBC模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*AES的CBC模式加密后的hex密文为:\n\t63cb82acb2fc49abd7ca2533a6753e2e69f898e0e9ad82ffa1d48adcc5661a5b1eb9fb6927a03ab33ac697f6df0cad7ccfe124067a651dbdb1d90ad490d4ec1ec730ed0d6705113536325f\n\tAES的CBC模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n}\n```\n\n\n## 2.2AES的CTR模式的快速使用\n\n```go\nfunc main() {\n\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\taesSecretKey := \"1234567812345678\"\n\tbase64Text, err := aes.AesCtrEncryptBase64([]byte(msg), []byte(aesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的CTR模式加密后的base64密文为:\\n%s\\n\", base64Text)\n\tplaintext, err := aes.AesCtrDecryptByBase64(base64Text, []byte(aesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的CTR模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*AES的CTR模式加密后的base64密文为:\n\tPzO1cjrO1q1PZeJEPw/fDM/TmZ2r4V+yao+MkDVTvR6pdlxdbFhzs1LF6rrZhUgC257ZQbofd0NTJFUUDwsc6rCcEL50\n\tAES的CTR模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n\thexText, err := aes.AesCtrEncryptHex([]byte(msg), []byte(aesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的CTR模式加密后的hex密文为:\\n%s\\n\", hexText)\n\tplaintext, err = aes.AesCtrDecryptByHex(hexText, []byte(aesSecretKey), nil)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的CTR模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*AES的CTR模式加密后的hex密文为:\n\t3f33b5723aced6ad4f65e2443f0fdf0ccfd3999dabe15fb26a8f8c903553bd1ea9765c5d6c5873b352c5eabad9854802db9ed941ba1f7743532455140f0b1ceab09c10be74\n\tAES的CTR模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n}\n```\n\n## 2.3AES的ECB模式的快速使用-不推荐\n\n```go\nfunc main() {\n\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\taesSecretKey := \"1234567812345678\"\n\tbase64Text, err := aes.AesEcbEncryptBase64([]byte(msg), []byte(aesSecretKey))\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的ECB模式加密后的base64密文为:\\n%s\\n\", base64Text)\n\tplaintext, err := aes.AesEcbDecryptByBase64(base64Text, []byte(aesSecretKey))\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的ECB模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*AES的ECB模式加密后的base64密文为:\n\tpiizmMYegn4S5xLmEPEdcixb4gmyq1OpncCkUzWU21kXe6N7SHjvbf5zvmeQ3FH2ZFEb2J21FTNpzVpHGaBNP7wr+6xw7Ucu3vTiAuzaIew=\n\tAES的ECB模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n\thexText, err := aes.AesEcbEncryptHex([]byte(msg), []byte(aesSecretKey))\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的ECB模式加密后的hex密文为:\\n%s\\n\", hexText)\n\tplaintext, err = aes.AesEcbDecryptByHex(hexText, []byte(aesSecretKey))\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"AES的ECB模式解密后:\\n%s\\n\", string(plaintext))\n\n\t/*AES的ECB模式加密后的hex密文为:\n\ta628b398c61e827e12e712e610f11d722c5be209b2ab53a99dc0a4533594db59177ba37b4878ef6dfe73be6790dc51f664511bd89db5153369cd5a4719a04d3fbc2bfbac70ed472edef4e202ecda21ec\n\tAES的ECB模式解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n}\n```\n\n## 3. 非对称加密RSA的快速使用\n\n##### 非对称加密需要先生成一对公钥和私钥，公钥和私钥是成对出现的，公钥加密只能私钥解密，私钥签名只能公钥验签，（加密都是使用私钥加密，公钥解密，数字签名就是使用私钥签名消息的哈希，然后公钥验证签名）\n\n#### 3.1 使用\n\n\n```go\nfunc main() {\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\trsaBase64Key, err := rsa.GenerateRsaKeyBase64(1024)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tbase64Text, err := rsa.RsaEncryptToBase64([]byte(msg), rsaBase64Key.PublicKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"rsa加密后的base64密文为:\\n%s\\n\", base64Text)\n\tplaintext, err := rsa.RsaDecryptByBase64(base64Text, rsaBase64Key.PrivateKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"rsa解密后:\\n%s\\n\", string(plaintext))\n\n\t/*rsa加密后的base64密文为:\n\tseAZe5Bojdp58eIf9hh5jf8PiIREr19IOXTc+re4z5crNR29mmXM6UFq5Uc1S53QLggL1+3nVNkA8AUnrw8jr4BM+oSqIvGqa92STz2XKcF7ukjTIakirWkOMRz3/dl8VIIucuJHedH7AOGtN1zhKVQbL3lejwq03J6cLEvz4WE=\n\trsa解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n\tbase64Sign, err := rsa.RsaSignBase64([]byte(msg), rsaBase64Key.PrivateKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"rsa签名的base64为:\\n%s\\n\", base64Sign)\n\tres := rsa.RsaVerifySignBase64([]byte(msg), base64Sign, rsaBase64Key.PublicKey)\n\tfmt.Printf(\"rsa验签结果为:\\n%v\\n\", res)\n\n\t/*rsa签名的base64为:\n\tcxe5nwMJB5dJwdvAmk7DPKSw46lL8mkwdhauwEWUXbcxKhh5EQN+ed/YTvTZh/yoWIQMKRqOlPszd6AnKA48Cy7Z5rfjj8rPobmYwGJzCkIWCCISZcaKYN5MOgLwRhyHSRwEwUcb3ZUdlj0QgCZHwleNq++FTtfTDwa9JuwWlSo=\n\trsa验签结果为:\n\ttrue*/\n}\n```\n\n```go\nfunc main() {\n\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\trsaHexKey, err := rsa.GenerateRsaKeyHex(1024)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tHexText, err := rsa.RsaEncryptToHex([]byte(msg), rsaHexKey.PublicKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"rsa加密后的Hex密文为:\\n%s\\n\", HexText)\n\tplaintext, err := rsa.RsaDecryptByHex(HexText, rsaHexKey.PrivateKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"rsa解密后:\\n%s\\n\", string(plaintext))\n\n\t/*rsa加密后的Hex密文为:\n\t7ff6e0cb36bbb537ffdb142344cf3383a2878253b4123845a16d048c1c22ec5f5e474f6ae3dea15b7d791ded3d34379ccdd452dfd11a21ddd4b35864d97f46798396baeb404b7e0f85239f81f1ed6d7c5b69b5ca7e1590413b7332557f5e02333210c18ad0863f606ff4473cfa70fdfda12ea0f7e8559e304686bda7016a695c\n\trsa解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n\thexSign, err := rsa.RsaSignHex([]byte(msg), rsaHexKey.PrivateKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"rsa签名的hex为:\\n%s\\n\", hexSign)\n\tres := rsa.RsaVerifySignHex([]byte(msg), hexSign, rsaHexKey.PublicKey)\n\tfmt.Printf(\"rsa验签结果为:\\n%v\\n\", res)\n\n\t/*rsa签名的hex为:\n\t48b2232ac4183ece8aa2f60393d27befff1e38a4d124cff97daa5877cd30d426ce8d78a2f13bab49e1964a340a35a8c90c8c0cca483ae2bba45e68523d32f0427d3c4f82c812fe79dc65d3729a6f9c45161ae00da955954e8d1b2e16a930d567fbe9fb3232e3c115d278e57397d073f0b8181f44ade76ce6bf548178d29bbf32\n\trsa验签结果为:\n\ttrue\n\t*/\n}\n```\n\n\n\u003e **RSA在非对称加密中使用比较广泛**\n\u003e\n\n## 4.ECC椭圆曲线应用\n\n**（GO里面只有ECC数字签名的接口，所以我们这里实现了ECC的数字签名功能，ECC椭圆曲线加密使用了区块链以太坊中的相关接口,ECC一般只签名使用加密一般不使用）**\n\n#### 4.1 ECC使用\n\n\n```go\nfunc main() {\n\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\teccBase64Key, err := ecc.GenerateEccKeyBase64()\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tbase64Text, err := ecc.EccEncryptToBase64([]byte(msg), eccBase64Key.PublicKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"ecc加密后的base64密文为:\\n%s\\n\", base64Text)\n\tplaintext, err := ecc.EccDecryptByBase64(base64Text, eccBase64Key.PrivateKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"ecc解密后:\\n%s\\n\", string(plaintext))\n\n\t/*ecc加密后的base64密文为:\n\tBAeEe7isXcDruhexWZixs0DqDJT4GUGEp9666ssgtgyixWpE4kxB/RsUbuFGR/eMA7ix+xJ9jet2glQVxUtPzRrLdmW6a31Dya0/bCb3WqpOsrGuC5MaZ3y6z0xkAbw1LGBVms6Ig/56JseK7jbOPCegvtgAO+5kESpjqptX6C/VynGyqEYDj/8PU0UnBwS2TFeAyG5rmwy1Z5P+kmbfNNfaIvKX4yODvJT4BdhATg9tUDkDDXw=\n\tecc解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n\trSign, sSign, err := ecc.EccSignBase64([]byte(msg), eccBase64Key.PrivateKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"ecc签名的为:\\nrSign=%s\\nsSign=%s\\n\", rSign, sSign)\n\tres := ecc.EccVerifySignBase64([]byte(msg), rSign, sSign, eccBase64Key.PublicKey)\n\tfmt.Printf(\"ecc验签结果为:\\n%v\\n\", res)\n\n\t/*ecc签名的为:\n\trSign=MzA3NTQyOTA4NzE0MzY1Nzg4MzU0OTkxNzk0NDIxODcyMTk4NjY0NzY5NzgzNDI5MjYxMjUwMTUxNjE1MzYzODM5MDI0ODMyNDg0MDU=\n\tsSign=MTUxMjc1NDAyMTY5NDE1NjY3MDU2ODU2ODk4MjcxNjcxMDMwNzAwODMyMjUwMjUwMTQ3MTU3NDY3NjgyNTEyODE2NDA5NzYwNTYxODQ=\n\tecc验签结果为:\n\ttrue\n\t*/\n}\n```\n\n```go\nfunc main() {\n\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\teccHexKey, err := ecc.GenerateEccKeyHex()\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\thexText, err := ecc.EccEncryptToHex([]byte(msg), eccHexKey.PublicKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"ecc加密后的hex密文为:\\n%s\\n\", hexText)\n\tplaintext, err := ecc.EccDecryptByHex(hexText, eccHexKey.PrivateKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"ecc解密后:\\n%s\\n\", string(plaintext))\n\n\t/*ecc加密后的hex密文为:\n\t04689a2f57eee52e36d16fa8628353cdb8a13f2686597f6d6b45d1bcc0d4cd75be09562d9ff565879cb333ef16b3c21e2411035d8aaaaf7e2dedc1803a879ca1382d40202aa7122365d71091a4d0683c36fa291f6b1d4ef4b30359cd7bd9c3ae875dc20f2c5e0d33121f01768373ac8b8cecff84511b76331510982753787e38da9ccd6f9f78f46641882cfe08e81db8a7cc1bf9213a63824b3d6d8dddeeaee448cfa0990e1a85c628e23eb2b9b37628b10efcc27c4c\n\tecc解密后:\n\t床前明月光，疑是地上霜，举头望明月，低头思故乡*/\n\n\trSign, sSign, err := ecc.EccSignHex([]byte(msg), eccHexKey.PrivateKey)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Printf(\"ecc签名的为:\\nrSign=%s\\nsSign=%s\\n\", rSign, sSign)\n\tres := ecc.EccVerifySignHex([]byte(msg), rSign, sSign, eccHexKey.PublicKey)\n\tfmt.Printf(\"ecc验签结果为:\\n%v\\n\", res)\n\n\t/*ecc签名的为:\n\trSign=35333235363338393635343330383234313231383931333332313533373634353032373036323933363630343834303735383739313330343130353033383139333235373530363834323337\n\tsSign=3533383435343038323339303534363136303332373435323435353130343139313530393637383432373237333735323038333836353934343135343638363231383335383831373838323632\n\tecc验签结果为:\n\ttrue\n\n\t*/\n}\n```\n\n\n## 5.sha256和sha512 hmac\n\n```\nfunc main() {\n\tmsg := \"床前明月光，疑是地上霜，举头望明月，低头思故乡\"\n\tfmt.Println(hash.Sha1Hex([]byte(msg)))\n\tfmt.Println(hash.Sha256Hex([]byte(msg)))\n\tfmt.Println(hash.Sha512Hex([]byte(msg)))\n\n\t// d2f1f816e0d40a1eb3f8aa60001f70a5b4ac21c4\n\t// 0f721dc0f0b9697a060c5541a389a7e5560e7b9a2dd3eca7f7688e477eee0243\n\t// f81bc5e4f057c28102adf27d31a98c5af8f259b213235225dce3b75815a4b76dccd0b181c7cb5347e118ab89b62542236d317dce584ce18c7c4a3c7f63fdaa52\n\n\tfmt.Println(hash.HmacSha256Hex([]byte(\"key\"),msg))\n\tfmt.Println(hash.HmacSha512Hex([]byte(\"key\"),msg))\n\n\t// e95c72fcfdd336559e6512198bc7b5d4f2c7c6ad2ece0f9e664548a809268904\n\t// 42603a67b53a572cdd6d8d4b8310ca8478391b4676822b66ccc473bf8d989b8f2d7afac8c75e7f7e9e723d2c8fbd7c575d897d6aba272dbfaaf903dfb750b323\n}\n}\n```\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwumansgy%2FgoEncrypt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwumansgy%2FgoEncrypt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwumansgy%2FgoEncrypt/lists"}