From da4d1ebf3a5b04d100e246d5a8cb46e4563d917e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Thu, 13 Jul 2023 13:47:07 +0800 Subject: [PATCH] =?UTF-8?q?enhance(crypto):=E5=8C=85=E8=A3=853DES=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E4=B8=AD=E7=9A=84=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- encryption/tdes/tdes.go | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/encryption/tdes/tdes.go b/encryption/tdes/tdes.go index 0067251..fdf19e6 100644 --- a/encryption/tdes/tdes.go +++ b/encryption/tdes/tdes.go @@ -5,6 +5,7 @@ import ( "crypto/cipher" "crypto/des" "crypto/sha256" + "fmt" "archgrid.xyz/ag/toolsbox/encryption" ) @@ -37,7 +38,7 @@ func XorKeyGenerator(key []byte) [3][8]byte { func rawDesEncrypt(data []byte, key [8]byte) ([]byte, error) { block, err := des.NewCipher(key[:]) if err != nil { - return nil, err + return nil, fmt.Errorf("创建加密单元失败,%w", err) } iv := key[:] cipherText := make([]byte, len(data)) @@ -50,7 +51,7 @@ func rawDesEncrypt(data []byte, key [8]byte) ([]byte, error) { func rawDesDecrypt(data []byte, key [8]byte) ([]byte, error) { block, err := des.NewCipher(key[:]) if err != nil { - return nil, err + return nil, fmt.Errorf("创建加密单元失败,%w", err) } iv := key[:] plainText := make([]byte, len(data)) @@ -67,14 +68,17 @@ func Encrypt(data []byte, key []byte, padding encryption.PaddingMode, keyGenerat plainText := encryption.Padding(data, des.BlockSize, padding) cipher1Text, err := rawDesEncrypt(plainText, desKeys[0]) if err != nil { - return nil, err + return nil, fmt.Errorf("第一阶段加密失败,%w", err) } plain2Text, err := rawDesDecrypt(cipher1Text, desKeys[1]) if err != nil { - return nil, err + return nil, fmt.Errorf("第二阶段解密失败,%w", err) } cipher3Text, err := rawDesEncrypt(plain2Text, desKeys[2]) - return cipher3Text, err + if err != nil { + return nil, fmt.Errorf("第三阶段加密失败,%w", err) + } + return cipher3Text, nil } // 对给定的数据进行解密。 @@ -84,12 +88,15 @@ func Decrypt(data []byte, key []byte, padding encryption.PaddingMode, keyGenerat desKeys := append(keyGenerator, XorKeyGenerator)[0](key) plainText, err := rawDesDecrypt(data, desKeys[2]) if err != nil { - return nil, err + return nil, fmt.Errorf("第三阶段解密失败,%w", err) } cipher2Text, err := rawDesEncrypt(plainText, desKeys[1]) if err != nil { - return nil, err + return nil, fmt.Errorf("第二阶段加密失败,%w", err) } plain3Text, err := rawDesDecrypt(cipher2Text, desKeys[0]) - return encryption.Unpadding(plain3Text, des.BlockSize, padding), err + if err != nil { + return nil, fmt.Errorf("第一阶段解密失败,%w", err) + } + return encryption.Unpadding(plain3Text, des.BlockSize, padding), nil }