32 lines
540 B
Go
32 lines
540 B
Go
package protocol
|
|
|
|
var xorEncryptorEnabled = false
|
|
var xorKey []byte
|
|
var xorKeyLen int
|
|
|
|
func SetEncryptorXorKey(key []byte) {
|
|
xorKey = key
|
|
xorKeyLen = len(key)
|
|
xorEncryptorEnabled = true
|
|
}
|
|
|
|
func (p *protocolPackage) xorEncrypt() {
|
|
if !xorEncryptorEnabled {
|
|
return
|
|
}
|
|
for i := range p.body {
|
|
p.body[i] ^= xorKey[i%xorKeyLen]
|
|
}
|
|
p.encryptor = EncryptorXor
|
|
}
|
|
|
|
func (p *protocolPackage) xorDecrypt() {
|
|
if !xorEncryptorEnabled {
|
|
return
|
|
}
|
|
for i := range p.body {
|
|
p.body[i] ^= xorKey[i%xorKeyLen]
|
|
}
|
|
p.encryptor = EncryptorNone
|
|
}
|