github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/internal/util/aes_crypto_test.go (about) 1 package util 2 3 import ( 4 "bytes" 5 "encoding/base64" 6 "fmt" 7 "testing" 8 ) 9 10 func TestAESEncryptMsg(t *testing.T) { 11 appId := "wx45f133bf6fce646e" 12 aesKey, err := base64.StdEncoding.DecodeString("AdiqDDDvUNCeE1ZW5XJmjf9fqNBJpGBs4vL4cHKmHBS=") 13 if err != nil { 14 t.Error(err) 15 return 16 } 17 18 random := []byte("cc9632a98304f81c") 19 plaintext := []byte(`<xml><ToUserName><![CDATA[gh_b1eb3f8bd6c6]]></ToUserName> 20 <FromUserName><![CDATA[okPEat9FRX96xG8JQvTxHLpzDV64]]></FromUserName> 21 <CreateTime>1458889120</CreateTime> 22 <MsgType><![CDATA[text]]></MsgType> 23 <Content><![CDATA[tests text message]]></Content> 24 <MsgId>6265881059295447969</MsgId> 25 </xml>`) 26 27 wantBase64Ciphertext := "gsKjKVChgrDDifoOdfrL/MWujrKxnSR1jBopv0zEdHFQXcx5I0bf4UxIRjektLHEziRxpU5zTw0s+gYF3WOFjk" + 28 "In30gzQl9XNKr2A+DCHVG05I2EcbOnnAR5EYgjGLAipra5nOfCPPIRFQTZ7SdanniXX73YOiCAKJlNH21+PApcYu4rPXxJ4eTXbBLwmfnS" + 29 "l7iojDX1LQIcC3FYmaapMQq/u+sJGsxshp4dLXJ6A5Ji3cSYAzXRVIxbNlHN1MWfdcZ0O5+ZtOU6dZiD8hJ4kkxh05EfOedWFjUy7ZhmXg" + 30 "rpZ4WpYPsrythXHE2Bg1Ohz8uf5h5X31yuU/3FPoa8rD21pfZnAjBT1QCkn6MxtL5lR+yoQReLwElVbtB6yJFPIZ+n9Qh/yKfIasxkzgIE" + 31 "o0pwPEbS17WCTyvRItJtU6tlo3rawJX+fsV63tKIfmLZjyZPDlV9/ka/nA/DT0KODw==" 32 33 ciphertext := AESEncryptMsg(random, plaintext, appId, aesKey) 34 base64Ciphertext := base64.StdEncoding.EncodeToString(ciphertext) 35 if base64Ciphertext != wantBase64Ciphertext { 36 t.Errorf("tests AESEncryptMsg failed,\nhave: %s\nwant: %s\n", base64Ciphertext, wantBase64Ciphertext) 37 return 38 } 39 } 40 41 func TestAESDecryptMsg(t *testing.T) { 42 aesKey, err := base64.StdEncoding.DecodeString("AdiqDDDvUNCeE1ZW5XJmjf9fqNBJpGBs4vL4cHKmHBS=") 43 if err != nil { 44 t.Error(err) 45 return 46 } 47 48 wantRandom := []byte("cc9632a98304f81c") 49 wantPlaintext := []byte(`<xml><ToUserName><![CDATA[gh_b1eb3f8bd6c6]]></ToUserName> 50 <FromUserName><![CDATA[okPEat9FRX96xG8JQvTxHLpzDV64]]></FromUserName> 51 <CreateTime>1458889120</CreateTime> 52 <MsgType><![CDATA[text]]></MsgType> 53 <Content><![CDATA[tests text message]]></Content> 54 <MsgId>6265881059295447969</MsgId> 55 </xml>`) 56 wantAppId := []byte("wx45f133bf6fce646e") 57 58 base64Ciphertext := "gsKjKVChgrDDifoOdfrL/MWujrKxnSR1jBopv0zEdHFQXcx5I0bf4UxIRjektLHEziRxpU5zTw0s+gYF3WOFjk" + 59 "In30gzQl9XNKr2A+DCHVG05I2EcbOnnAR5EYgjGLAipra5nOfCPPIRFQTZ7SdanniXX73YOiCAKJlNH21+PApcYu4rPXxJ4eTXbBLwmfnS" + 60 "l7iojDX1LQIcC3FYmaapMQq/u+sJGsxshp4dLXJ6A5Ji3cSYAzXRVIxbNlHN1MWfdcZ0O5+ZtOU6dZiD8hJ4kkxh05EfOedWFjUy7ZhmXg" + 61 "rpZ4WpYPsrythXHE2Bg1Ohz8uf5h5X31yuU/3FPoa8rD21pfZnAjBT1QCkn6MxtL5lR+yoQReLwElVbtB6yJFPIZ+n9Qh/yKfIasxkzgIE" + 62 "o0pwPEbS17WCTyvRItJtU6tlo3rawJX+fsV63tKIfmLZjyZPDlV9/ka/nA/DT0KODw==" 63 ciphertext, err := base64.StdEncoding.DecodeString(base64Ciphertext) 64 if err != nil { 65 t.Error(err) 66 return 67 } 68 69 random, plaintext, appId, err := AESDecryptMsg(ciphertext, aesKey) 70 if err != nil { 71 t.Error(err) 72 return 73 } 74 if !bytes.Equal(random, wantRandom) { 75 t.Errorf("tests AESDecryptMsg failed,\nhave random: %s\nwant random: %s\n", random, wantRandom) 76 return 77 } 78 if !bytes.Equal(plaintext, wantPlaintext) { 79 t.Errorf("tests AESDecryptMsg failed,\nhave plaintext: %s\nwant plaintext: %s\n", plaintext, wantPlaintext) 80 return 81 } 82 if !bytes.Equal(appId, wantAppId) { 83 t.Errorf("tests AESDecryptMsg failed,\nhave appid: %s\nwant appid: %s\n", appId, wantAppId) 84 return 85 } 86 } 87 88 func TestAEESDecryptData(t *testing.T) { 89 aesKey, err := base64.StdEncoding.DecodeString("HogNecGqZeDxFIDGjBwWKw==") 90 aesIv, err := base64.StdEncoding.DecodeString("aoZqkfGDWwqj6rFgWdafyw==") 91 92 base64Ciphertext := "4B9B1aknFM6yQjAh9mFxH3iN4PZXUGfpBLB98CRAVZzNfUI4J1WUur70+NSH/5MXcCidrt44hi6dkByTtRPxrTIV1BOOTvaa2G5NWunTXZJ37/Oq0ezydbDal5v+X3bvVVeFR6MkhYI+hT9xVl2XnE/Bzon2gIq9F9Fy8Yny0VPqsQ95xUyXnN3/IuhiquR1pAgKjDK3kgCoqhUVNa0dRRQQgTNIpy1djbLfyErPXGTXe1qhAj7RvDdJtRloEfg63JgaB/QTR2BLEGT7/GfHnwROfngxa3esGDeBr9Mtav67R4PjYESVFtH2Yf2npaDWAvAMvr+8hNVd2tjy/3HgImctZWo7bh1OHa/ktH4wKYVbTgxZPg/lgTWC+zsl1Z9g07vWQyGpaA11HODDGn1Kdvh6esiY7T3JQ15nKs1rdyXigNQFb9+kicPiInKVfOiuMcGEazli5/UQHF5rnuWhkg/wy+PRbZybR18lLh5d+EW1CnK8gNcQblDJPvx6QFcFhPxr28WkEd7ys0BZQGCIkQ==" 93 ciphertext, err := base64.StdEncoding.DecodeString(base64Ciphertext) 94 if err != nil { 95 t.Error(err) 96 return 97 } 98 99 raw, err := AESDecryptData(ciphertext, aesKey, aesIv) 100 101 fmt.Println(string(raw), err) 102 if err != nil { 103 t.Error(err) 104 return 105 } 106 107 }