transx/tscipher/xor.go

40 lines
740 B
Go

package tscipher
import ()
type XOR struct {
key []byte
}
func (this *XOR) Decrypt(data []byte) (decrypted []byte, err error) {
// decrypted = data
// err = nil
// return
decrypted = make([]byte, len(data))
for i := 0; i < len(data); i++ {
decrypted[i] = data[len(data)-i-1] ^ this.key[i%len(this.key)]
// decrypted[i] = data[i]
}
err = nil
return
}
func (this *XOR) Encrypt(data []byte) (encryped []byte, err error) {
// encryped = data
// err = nil
// return
encryped = make([]byte, len(data))
for i := 0; i < len(data); i++ {
encryped[len(data)-i-1] = data[i] ^ this.key[i%len(this.key)]
// encryped[i] = data[i]
}
err = nil
return
}
func NewXOR(key []byte) (cipher Cipher) {
return &XOR{
key: key,
}
}