mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 07:40:56 +08:00 
			
		
		
		
	增强加密密钥的稳定性
This commit is contained in:
		@@ -19,9 +19,12 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	simpleEncryptMagicKey = rands.HexString(32)
 | 
			
		||||
	defaultNodeEncryptKey    = rands.HexString(32)
 | 
			
		||||
	defaultClusterEncryptKey = rands.HexString(32)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var encryptV2Suffix = []byte("$v2")
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	if !teaconst.IsMain {
 | 
			
		||||
		return
 | 
			
		||||
@@ -30,7 +33,8 @@ func init() {
 | 
			
		||||
	events.On(events.EventReload, func() {
 | 
			
		||||
		nodeConfig, _ := nodeconfigs.SharedNodeConfig()
 | 
			
		||||
		if nodeConfig != nil {
 | 
			
		||||
			simpleEncryptMagicKey = stringutil.Md5(nodeConfig.NodeId + "@" + nodeConfig.Secret)
 | 
			
		||||
			defaultNodeEncryptKey = stringutil.Md5(nodeConfig.NodeId + "@" + nodeConfig.Secret)
 | 
			
		||||
			defaultClusterEncryptKey = stringutil.Md5(defaultClusterEncryptKey)
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
@@ -38,7 +42,7 @@ func init() {
 | 
			
		||||
// SimpleEncrypt 加密特殊信息
 | 
			
		||||
func SimpleEncrypt(data []byte) []byte {
 | 
			
		||||
	var method = &AES256CFBMethod{}
 | 
			
		||||
	err := method.Init([]byte(simpleEncryptMagicKey), []byte(simpleEncryptMagicKey[:16]))
 | 
			
		||||
	err := method.Init([]byte(defaultClusterEncryptKey), []byte(defaultClusterEncryptKey[:16]))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logs.Println("[SimpleEncrypt]" + err.Error())
 | 
			
		||||
		return data
 | 
			
		||||
@@ -49,13 +53,24 @@ func SimpleEncrypt(data []byte) []byte {
 | 
			
		||||
		logs.Println("[SimpleEncrypt]" + err.Error())
 | 
			
		||||
		return data
 | 
			
		||||
	}
 | 
			
		||||
	dst = append(dst, encryptV2Suffix...)
 | 
			
		||||
	return dst
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SimpleDecrypt 解密特殊信息
 | 
			
		||||
func SimpleDecrypt(data []byte) []byte {
 | 
			
		||||
	if bytes.HasSuffix(data, encryptV2Suffix) {
 | 
			
		||||
		data = data[:len(data)-len(encryptV2Suffix)]
 | 
			
		||||
		return simpleDecrypt(data, defaultClusterEncryptKey)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 兼容老的Key
 | 
			
		||||
	return simpleDecrypt(data, defaultNodeEncryptKey)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func simpleDecrypt(data []byte, key string) []byte {
 | 
			
		||||
	var method = &AES256CFBMethod{}
 | 
			
		||||
	err := method.Init([]byte(simpleEncryptMagicKey), []byte(simpleEncryptMagicKey[:16]))
 | 
			
		||||
	err := method.Init([]byte(key), []byte(key[:16]))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logs.Println("[MagicKeyEncode]" + err.Error())
 | 
			
		||||
		return data
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user