From e23cadd20c86ff3162a65f3e951675c52f738fe0 Mon Sep 17 00:00:00 2001 From: zijiren233 Date: Tue, 26 Dec 2023 12:18:12 +0800 Subject: [PATCH] Fix: crypot key len error --- internal/model/vendorBackend.go | 4 ++-- internal/model/vendorRecord.go | 8 ++++---- utils/crypto.go | 8 ++++++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/internal/model/vendorBackend.go b/internal/model/vendorBackend.go index 1c92362..9c7af15 100644 --- a/internal/model/vendorBackend.go +++ b/internal/model/vendorBackend.go @@ -65,7 +65,7 @@ type BackendUsedBy struct { } func (v *VendorBackend) BeforeSave(tx *gorm.DB) error { - key := []byte(v.Backend.Endpoint) + key := utils.GenCryptoKey(v.Backend.Endpoint) var err error if v.Backend.JwtSecret != "" { if v.Backend.JwtSecret, err = utils.CryptoToBase64([]byte(v.Backend.JwtSecret), key); err != nil { @@ -91,7 +91,7 @@ func (v *VendorBackend) BeforeSave(tx *gorm.DB) error { } func (v *VendorBackend) AfterSave(tx *gorm.DB) error { - key := []byte(v.Backend.Endpoint) + key := utils.GenCryptoKey(v.Backend.Endpoint) var ( err error data []byte diff --git a/internal/model/vendorRecord.go b/internal/model/vendorRecord.go index 93b4103..437cfe3 100644 --- a/internal/model/vendorRecord.go +++ b/internal/model/vendorRecord.go @@ -48,7 +48,7 @@ type AlistVendor struct { } func (a *AlistVendor) BeforeSave(tx *gorm.DB) error { - key := []byte(a.UserID) + key := utils.GenCryptoKey(a.UserID) var err error if a.Host, err = utils.CryptoToBase64([]byte(a.Host), key); err != nil { return err @@ -63,7 +63,7 @@ func (a *AlistVendor) BeforeSave(tx *gorm.DB) error { } func (a *AlistVendor) AfterSave(tx *gorm.DB) error { - key := []byte(a.UserID) + key := utils.GenCryptoKey(a.UserID) if v, err := utils.DecryptoFromBase64(a.Host, key); err != nil { return err } else { @@ -94,7 +94,7 @@ type EmbyVendor struct { } func (e *EmbyVendor) BeforeSave(tx *gorm.DB) error { - key := []byte(e.UserID) + key := utils.GenCryptoKey(e.UserID) var err error if e.Host, err = utils.CryptoToBase64([]byte(e.Host), key); err != nil { return err @@ -106,7 +106,7 @@ func (e *EmbyVendor) BeforeSave(tx *gorm.DB) error { } func (e *EmbyVendor) AfterSave(tx *gorm.DB) error { - key := []byte(e.UserID) + key := utils.GenCryptoKey(e.UserID) if v, err := utils.DecryptoFromBase64(e.Host, key); err != nil { return err } else { diff --git a/utils/crypto.go b/utils/crypto.go index 7d563df..2e181e6 100644 --- a/utils/crypto.go +++ b/utils/crypto.go @@ -68,3 +68,11 @@ func GenCryptoKey(base string) []byte { } return key } + +func GenCryptoKeyWithBytes(base []byte) []byte { + key := make([]byte, 32) + for i := 0; i < len(base); i++ { + key[i%32] ^= base[i] + } + return key +}