{"id":166926,"date":"2020-10-03T17:05:01","date_gmt":"2020-10-03T09:05:01","guid":{"rendered":"http:\/\/4563.org\/?p=166926"},"modified":"2020-10-03T17:05:01","modified_gmt":"2020-10-03T09:05:01","slug":"aes-%e5%8a%a0%e5%af%86-cbc-%e6%a8%a1%e5%bc%8f%e7%9a%84-nopadding-%e5%a1%ab%e5%85%85%e5%9c%a8-go-%e9%87%8c%e6%80%8e%e4%b9%88%e5%ae%9e%e7%8e%b0%e5%95%8a","status":"publish","type":"post","link":"http:\/\/4563.org\/?p=166926","title":{"rendered":"Aes \u52a0\u5bc6 CBC \u6a21\u5f0f\u7684 Nopadding \u586b\u5145\u5728 GO \u91cc\u600e\u4e48\u5b9e\u73b0\u554a"},"content":{"rendered":"<div>\n<div>\n<div>\n<h1>                  Aes \u52a0\u5bc6 CBC \u6a21\u5f0f\u7684 Nopadding \u586b\u5145\u5728 GO \u91cc\u600e\u4e48\u5b9e\u73b0\u554a               <\/h1>\n<p> <\/p>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : chengxiao <\/span>  <span><i><\/i> 6<\/span> <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div isfirst=\"1\">                        \u5bf9\u63a5\u67d0\u5546\u6237\u7cfb\uff0c\u88ab\u8fd9\u4e2a\u7b7e\u540d\u641e\u7684\u5934\u5927\uff0c\u8fd9\u4e2a NoPadding \u4f3c\u4e4e\u662f\u4e2a java \u91cc\u7684\u65b9\u6cd5\uff0c\u6ca1\u67e5\u5230\u76f8\u5173\u4fe1\u606f<\/p>\n<p>\u4e1a\u52a1\u53c2\u6570\u52a0\u5bc6\u6b65\u9aa4\uff1a<br \/>1 \uff09\u5c06\u4e1a\u52a1\u53c2\u6570\u8f6c\u6362\u6210 json \u683c\u5f0f\u5b57\u7b26\u4e32<\/p>\n<p>2 \uff09\u7528 AES \u7b97\u6cd5\u52a0\u5bc6,\u79d8\u94a5\u4e3a appSecret \u91cd\u590d\u4e24\u904d\uff0c\u504f\u79fb\u91cf\u4e3a appSecret \u91cd\u590d\u4e24\u904d(16 \u4f4d\u79d8\u94a5\u4e0d\u7528\u91cd\u590d)\uff0c\u52a0\u5bc6\u6a21\u5f0f CBC\uff0c\u586b\u5145\u6a21\u5f0f\uff1b NoPadding<\/p>\n<p>3 \uff09\u52a0\u5bc6\u540e\u5b57\u7b26\u5373\u4e3a\u516c\u5171\u53c2\u6570 requestBody \u7684\u503c<\/p>\n<p>\u4e1a\u52a1\u53c2\u6570\u793a\u4f8b\uff1a<br \/>{<br \/>&#8220;number&#8221;:&#8221;123&#8243;,<br \/>&#8220;string&#8221;:&#8221;\u6d4b\u8bd5&#8221;,<br \/>&#8220;double&#8221;:1.0,<br \/>&#8220;boolean&#8221;:true<br \/>}<\/p>\n<p>\u5f00\u53d1\u8005\u79d8\u94a5\u4e3a\uff1a12345678<\/p>\n<p>AES \u52a0\u5bc6\u7ed3\u679c\uff1a<br \/>Vq2Kj4Z8C+hFf7VdFPbCoY3LmJgf2LM7B2a3klFxGWMlL1BAxx7v\/ZZdkxqdMPXqRPjy3k0tVKgx<br \/>KMTTAlbE0PGhp2LtqzouDWZaH1g9ttQ=      <\/div>\n<div> <b>\u5927\u4f6c\u6709\u8a71\u8aaa<\/b> (<span>9<\/span>)        <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<ul>\n<li data-pid=\"3682037\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : kingiis <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u516c\u7528 c \u5e93\u53ef\u80fd\u4f1a\u597d\u70b9                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3682038\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : songjiaxin2008 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u53ef\u4ee5\u53c2\u8003\u4e00\u4e0b\u8fd9\u4e2a\u5b9e\u73b0 https:\/\/github.com\/wumansgy\/goEncrypt \u5f15\u7528\u7684\u5305\u90fd\u662f\u6807\u51c6\u5e93\u7684                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3682039\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : songjiaxin2008 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             NoPadding = ZeroPadding                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3682040\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : songjiaxin2008 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div> <img decoding=\"async\" src=\"http:\/\/4563.org\/wp-content\/uploads\/2020\/10\/20201015_5f87e8f530e7d.jpg\" rel=\"noreferrer\" referrerpolicy=\"no-referrer\" alt=\"Aes \u52a0\u5bc6 CBC \u6a21\u5f0f\u7684 Nopadding \u586b\u5145\u5728 GO \u91cc\u600e\u4e48\u5b9e\u73b0\u554a\"> \u7f51\u9875\u4e0a\u8dd1\u4e86\u4e0b\u5e94\u8be5\u6ca1\u5565\u95ee\u9898                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3682041\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : geelaw <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u4e3a\u4e86\u6570\u636e\u5b89\u5168\u6700\u597d\u8fd8\u662f\u4e0d\u8981\u5bf9\u63a5\u8fd9\u4e2a\u7cfb\u7edf\uff0c\u4f7f\u7528\u975e\u4f2a\u968f\u673a\u7684\u5bc6\u94a5\u4ee5\u53ca\u4f7f\u7528\u5bc6\u94a5\u76f8\u5173\u7684 IV\uff0c\u90fd\u4f1a\u7834\u574f AES \u6240\u6709\u7684\u5b89\u5168\u4fdd\u8bc1\u3002                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3682042\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : teawithlife <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u5176\u5b9e\u5c31\u662f\u540e\u9762\u8865 0x00<br \/>play.golang.org\/p\/MxstiahPDa3                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3682043\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : dafsic <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u6211\u5bf9\u63a5\u8fc7\uff0c\u8ddf java \u7248\u672c\u6709\u5173\uff0c\u95ee\u95ee java \u662f\u4ec0\u4e48\u7248\u672c\uff0c\u6700\u597d\u8981\u5230\u52a0\u5bc6\u90e8\u5206\u7684 java \u4ee3\u7801\u770b\u770b                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3682044\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : TypeErrorNone <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u4e4b\u524d\u5199\u7684,\u53ef\u4ee5\u53c2\u8003\u4e0b<\/p>\n<p>&#8220;`<br \/>package xaes<\/p>\n<p>import (<br \/> &#8220;bytes&#8221;<br \/> &#8220;crypto\/aes&#8221;<br \/> &#8220;crypto\/cipher&#8221;<br \/> &#8220;crypto\/rand&#8221;<br \/> &#8220;crypto\/sha256&#8221;<br \/> &#8220;encoding\/base64&#8221;<br \/> &#8220;github.com\/pkg\/errors&#8221;<br \/>)<\/p>\n<p>type Aes struct {<br \/> key []byte<br \/>}<\/p>\n<p>func NewAes(key string) (*Aes) {<br \/> if key == &#8220;&#8221; {<br \/> panic(&#8220;aes key empty&#8221;)<br \/> }<br \/> sum := sha256.Sum256([]byte(key))<br \/> return &amp;Aes{<br \/> key:sum[:],<br \/> }<br \/>}<\/p>\n<p>func (a *Aes) Encrypt(encodeBytes []byte) (val string, err error) {<br \/> block, err := aes.NewCipher(a.key)<br \/> if err != nil {<br \/> return<br \/> }<br \/> blockSize := block.BlockSize()<br \/> encodeBytes = a.pkCS5Padding(encodeBytes, blockSize)<\/p>\n<p> iv := make([]byte, blockSize)<br \/> _,err = rand.Read(iv)<br \/> if err != nil {<br \/> return<br \/> }<\/p>\n<p> blockMode := cipher.NewCBCEncrypter(block, iv)<br \/> crypted := make([]byte, len(encodeBytes))<br \/> blockMode.CryptBlocks(crypted, encodeBytes)<\/p>\n<p> iv = append(iv,crypted&#8230;)<br \/> val = base64.StdEncoding.EncodeToString(iv)<br \/> return<br \/>}<\/p>\n<p>func (a *Aes) pkCS5Padding(ciphertext []byte, blockSize int) []byte {<br \/> padding := blockSize &#8211; len(ciphertext)%blockSize<br \/> padtext := bytes.Repeat([]byte{byte(padding)}, padding)<br \/> return append(ciphertext, padtext&#8230;)<br \/>}<\/p>\n<p>func (a *Aes) Decrypt(decodeStr string) (origData []byte,err error) {<br \/> decodeBytes, err := base64.StdEncoding.DecodeString(decodeStr)<br \/> if err != nil {<br \/> return<br \/> }<br \/> block, err := aes.NewCipher(a.key)<br \/> if err != nil {<br \/> return nil, err<br \/> }<br \/> if len(decodeBytes) &lt; block.BlockSize() {<br \/> err = errors.New(&#8220;decodeBytes \u957f\u5ea6\u4e0d\u8db3&#8221;)<br \/> return<br \/> }<br \/> iv := decodeBytes[:block.BlockSize()]<br \/> decodeBytes = decodeBytes[block.BlockSize():]<\/p>\n<p> blockMode := cipher.NewCBCDecrypter(block, iv)<br \/> origData = make([]byte, len(decodeBytes))<br \/> blockMode.CryptBlocks(origData, decodeBytes)<br \/> origData = a.pkCS5UnPadding(origData)<br \/> return<br \/>}<\/p>\n<p>func (a *Aes) pkCS5UnPadding(origData []byte) []byte {<br \/> length := len(origData)<br \/> unpadding := int(origData[length-1])<br \/> return origData[:(length &#8211; unpadding)]<br \/>}<br \/>&#8220;`                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3682045\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : chengxiao <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @TypeErrorNone <br \/>@teawithlife <br \/>@songjiaxin2008 <br \/>\u8c22\u8c22\u51e0\u4f4d\u8001\u54e5 \u5c31\u662f\u88ab\u8fd9\u4e2a NoPadding \u600e\u4e48\u8865\u4f4d\u641e\u8499\u4e86 \u539f\u6765 ZeroPadding \u5c31\u53ef\u4ee5                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li>\n","protected":false},"excerpt":{"rendered":"<p>Aes \u52a0\u5bc6 CBC \u6a21\u5f0f\u7684 No&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/166926"}],"collection":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=166926"}],"version-history":[{"count":0,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/166926\/revisions"}],"wp:attachment":[{"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=166926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=166926"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=166926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}