更多的东西用config.json保存
This commit is contained in:
@@ -6,14 +6,15 @@ import (
|
||||
"github.com/TransX/cache"
|
||||
"github.com/TransX/log"
|
||||
"github.com/TransX/utils"
|
||||
"github.com/spf13/viper"
|
||||
"io"
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var StartMark = []byte("#2v!") //should be constant
|
||||
var EndMark = []byte("_=1z") //should be constant
|
||||
// var StartMark = []byte("#2v!") //should be constant
|
||||
// var EndMark = []byte("_=1z") //should be constant
|
||||
|
||||
type LackDataError struct {
|
||||
e string
|
||||
@@ -75,7 +76,7 @@ func NewCipher(cipherName string) (cipher Cipher) {
|
||||
return NewAES()
|
||||
}
|
||||
if cipherName == "XOR" {
|
||||
return NewXOR([]byte("fasdfasdf!3297!jfsl12*&!HHHFds"))
|
||||
return NewXOR([]byte(viper.GetString("auth.XORKey")))
|
||||
}
|
||||
return nil //TODO:临时这样处理
|
||||
}
|
||||
@@ -83,10 +84,11 @@ func NewCipher(cipherName string) (cipher Cipher) {
|
||||
func WrapPackage(data []byte) []byte { //把要加密传输的数据打包成一定的格式,避免发送了100自己,只收到90字节的问题。
|
||||
sizeOfData := len(data)
|
||||
binSize := utils.Int2binary(sizeOfData, 10)
|
||||
header := append(append(StartMark, binSize...), EndMark...)
|
||||
startMark := []byte(viper.GetString("auth.startMark"))
|
||||
endMark := []byte(viper.GetString("auth.endMark"))
|
||||
header := append(append(startMark, binSize...), endMark...)
|
||||
//加密
|
||||
key := []byte("#2GD+.>dt`Qdp")
|
||||
key = key
|
||||
key := []byte(viper.GetString("auth.headerKey"))
|
||||
cipheredHeader := make([]byte, len(header))
|
||||
for i, v := range header {
|
||||
cipheredHeader[i] = v ^ key[i%len(key)]
|
||||
@@ -98,7 +100,7 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) {
|
||||
//前14个字节是header
|
||||
cipheredHeader := pacakge[:18]
|
||||
header := make([]byte, len(cipheredHeader))
|
||||
key := []byte("#2GD+.>dt`Qdp")
|
||||
key := []byte(viper.GetString("auth.headerKey"))
|
||||
key = key
|
||||
for i, v := range cipheredHeader {
|
||||
header[i] = v ^ key[i%len(key)]
|
||||
@@ -107,7 +109,11 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) {
|
||||
end := header[14:]
|
||||
binSize := header[4:14]
|
||||
packageSize := 0
|
||||
if bytes.Compare(start, StartMark) == 0 && bytes.Compare(end, EndMark) == 0 {
|
||||
startMarkStr := viper.GetString("auth.startMark")
|
||||
endMarkStr := viper.GetString("auth.endMark")
|
||||
startMark := []byte(startMarkStr)
|
||||
endMark := []byte(endMarkStr)
|
||||
if bytes.Compare(start, startMark) == 0 && bytes.Compare(end, endMark) == 0 {
|
||||
packageSize = utils.Binary2Int(binSize)
|
||||
if len(pacakge[18:]) < packageSize {
|
||||
packageSize = 0
|
||||
@@ -123,9 +129,9 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) {
|
||||
packageSize = 0
|
||||
data = nil
|
||||
rest = nil
|
||||
if strings.Contains(string(pacakge), "#2v!") && strings.Contains(string(pacakge), "_=1z") {
|
||||
a := strings.Index(string(pacakge), "#2v!")
|
||||
b := strings.Index(string(pacakge), "_=1z")
|
||||
if strings.Contains(string(pacakge), startMarkStr) && strings.Contains(string(pacakge), endMarkStr) {
|
||||
a := strings.Index(string(pacakge), startMarkStr)
|
||||
b := strings.Index(string(pacakge), endMarkStr)
|
||||
err = &NotPackageError{"NotPackageError(contains)" + "start:" + string(start) + " end:" + string(end) + "pacakge " + strconv.Itoa(len(pacakge)) + "start" + strconv.Itoa(a) + "end" + strconv.Itoa(b)}
|
||||
} else {
|
||||
err = &NotPackageError{fmt.Sprintf("NotPackageError start: %s end: %s whole %x", string(start), string(end), header)}
|
||||
|
||||
Reference in New Issue
Block a user