From b6e53aea9e988949a35ec13617561030b61d24fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 10 Jun 2022 18:02:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8A=96=E9=9F=B3=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF=E8=A7=A3=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/utils_crypt.go | 14 ++++++++++++++ utils/utils_crypt_test.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/utils/utils_crypt.go b/utils/utils_crypt.go index 084eb680..c2da0500 100644 --- a/utils/utils_crypt.go +++ b/utils/utils_crypt.go @@ -45,3 +45,17 @@ func PKCSPadding(ciphertext []byte, blockSize int) []byte { padtext := bytes.Repeat([]byte{byte(padding)}, padding) return append(ciphertext, padtext...) } + +// AESCBC16Decrypt 抖音十六位解密 +func AESCBC16Decrypt(key, iv, src []byte) ([]byte, error) { + decrypted := make([]byte, len(src)) + var aesBlockDecrypt cipher.Block + aesBlockDecrypt, err := aes.NewCipher(key) + if err != nil { + println(err.Error()) + return nil, err + } + aesDecrypt := cipher.NewCBCDecrypter(aesBlockDecrypt, iv) + aesDecrypt.CryptBlocks(decrypted, src) + return decrypted[:len(decrypted)-int(decrypted[len(decrypted)-1])], err +} diff --git a/utils/utils_crypt_test.go b/utils/utils_crypt_test.go index abe0ac62..b9d15921 100644 --- a/utils/utils_crypt_test.go +++ b/utils/utils_crypt_test.go @@ -1,6 +1,7 @@ package utils import ( + "encoding/base64" "testing" ) @@ -19,3 +20,32 @@ func TestCrypt(t *testing.T) { t.Fatal("result is wrong") } } + +func TestCrypt2(t *testing.T) { + //aesKey := []byte("123456789012345678901234567890ab") + //msg := "hellasfsafsdsads" + //encryptedMsg, err := AESCBCEncpryt([]byte(msg), aesKey, aesKey[:16]) + //if err != nil { + // t.Fatal(err) + //} + encryptedMsg := "f6T3xoXOusWl0CPnNbJdl/5nYbiNDADGhiUdaLtZoU8sb5iKUifnr89PvQRMVIwtjOeJHpXc0kDRrw+z4zrNlOH2N/LcAjg0WOKT19B1s+LBypnfY24zXgaTEOxzPhqooZMDgIM8KvSqoV+iwFtgo7+PBnry7j/GzFSg91CNTWK6JKB6yk+dqg04SrN+Tw/X/Lmhh6fshWkVKTuZovxp/g==" + sessionKey := "nClNe9ciHfYQZIa5CWtnkg==" + Base64_DecodeIv := "okoPcc0wFtQUn4E8+ksWZA==" + + bytesPassMsg, _ := base64.StdEncoding.DecodeString(encryptedMsg) + Base64_DecodeIv1, _ := base64.StdEncoding.DecodeString(Base64_DecodeIv) + sessionKey1, _ := base64.StdEncoding.DecodeString(sessionKey) + + decryptedMsg, err := AESCBC16Decrypt(sessionKey1, Base64_DecodeIv1, bytesPassMsg) + if err != nil { + t.Fatal(err) + } + t.Fatal(string(decryptedMsg)) + + //data, err := AESCBCDecpryt(bytesPass, []byte(sessionKey), []byte(Base64_Decode)) + //if err != nil { + // t.Fatal(err) + //} + //t.Fatal(data) + +}