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 (
 | 
					var (
 | 
				
			||||||
	simpleEncryptMagicKey = rands.HexString(32)
 | 
						defaultNodeEncryptKey    = rands.HexString(32)
 | 
				
			||||||
 | 
						defaultClusterEncryptKey = rands.HexString(32)
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var encryptV2Suffix = []byte("$v2")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	if !teaconst.IsMain {
 | 
						if !teaconst.IsMain {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
@@ -30,7 +33,8 @@ func init() {
 | 
				
			|||||||
	events.On(events.EventReload, func() {
 | 
						events.On(events.EventReload, func() {
 | 
				
			||||||
		nodeConfig, _ := nodeconfigs.SharedNodeConfig()
 | 
							nodeConfig, _ := nodeconfigs.SharedNodeConfig()
 | 
				
			||||||
		if nodeConfig != nil {
 | 
							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 加密特殊信息
 | 
					// SimpleEncrypt 加密特殊信息
 | 
				
			||||||
func SimpleEncrypt(data []byte) []byte {
 | 
					func SimpleEncrypt(data []byte) []byte {
 | 
				
			||||||
	var method = &AES256CFBMethod{}
 | 
						var method = &AES256CFBMethod{}
 | 
				
			||||||
	err := method.Init([]byte(simpleEncryptMagicKey), []byte(simpleEncryptMagicKey[:16]))
 | 
						err := method.Init([]byte(defaultClusterEncryptKey), []byte(defaultClusterEncryptKey[:16]))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		logs.Println("[SimpleEncrypt]" + err.Error())
 | 
							logs.Println("[SimpleEncrypt]" + err.Error())
 | 
				
			||||||
		return data
 | 
							return data
 | 
				
			||||||
@@ -49,13 +53,24 @@ func SimpleEncrypt(data []byte) []byte {
 | 
				
			|||||||
		logs.Println("[SimpleEncrypt]" + err.Error())
 | 
							logs.Println("[SimpleEncrypt]" + err.Error())
 | 
				
			||||||
		return data
 | 
							return data
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						dst = append(dst, encryptV2Suffix...)
 | 
				
			||||||
	return dst
 | 
						return dst
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SimpleDecrypt 解密特殊信息
 | 
					// SimpleDecrypt 解密特殊信息
 | 
				
			||||||
func SimpleDecrypt(data []byte) []byte {
 | 
					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{}
 | 
						var method = &AES256CFBMethod{}
 | 
				
			||||||
	err := method.Init([]byte(simpleEncryptMagicKey), []byte(simpleEncryptMagicKey[:16]))
 | 
						err := method.Init([]byte(key), []byte(key[:16]))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		logs.Println("[MagicKeyEncode]" + err.Error())
 | 
							logs.Println("[MagicKeyEncode]" + err.Error())
 | 
				
			||||||
		return data
 | 
							return data
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user