一、加密、解密代码:

// 传入一个字节数组,加密后返回字节数组
func GetNegation(strb []byte) []byte {
	var strsN []byte
	for _, b := range strb { // 循环遍历字节数组
		// 将每个字节取反后加77,实现加密,再拼接为字节数组
		strsN = append(strsN, ^b+77)
	}
	return strsN //返回加密后的字节数组
}

二、字符串加密测试:

	// 加密过程
	str := "我的原始数据"
	strByte := []byte(str)             // 字符串转为字节数组
	negStrBtye := GetNegation(strByte) // 加密,生成加密后的字节数组
	negStr := string(negStrBtye)       // 加密后的字节数组转为字符串
	fmt.Println("字符串:", str)
	fmt.Println("字符串的字节数组:", strByte)
	fmt.Println("加密后的字节数组:", negStrBtye)
	fmt.Println("加密后的字符串:", negStr)

加密输出结果:

字符串: 我的原始数据
字符串的字节数组: [230 136 145 231 154 132 229 142 159 229 167 139 230 149 176 230 141 174]
加密后的字节数组: [102 196 187 101 178 200 103 190 173 103 165 193 102 183 156 102 191 158]
加密后的字符串: fĻe��g��g��f��f��

三、解密过程:

    //解密过程
	negStrBtye2 := []byte(negStr)          // 加密后的字符串转为字节数组
	decodeByte := GetNegation(negStrBtye2) // 解密,生成解密后的字节数组
	decodeStr := string(decodeByte)        // 转为解密后的字符串
	fmt.Println("加密后的字节数组:", negStrBtye2)
	fmt.Println("解密后的字节数组:", decodeByte)
	fmt.Println("解密后的字符串:", decodeStr)

解密输出结果:

加密后的字节数组: [102 196 187 101 178 200 103 190 173 103 165 193 102 183 156 102 191 158]
解密后的字节数组: [230 136 145 231 154 132 229 142 159 229 167 139 230 149 176 230 141 174]
解密后的字符串: 我的原始数据

四、完整代码:

package main

import "fmt"

// 传入一个字节数组,加密后返回字节数组
func GetNegation(strb []byte) []byte {
	var strsN []byte
	for _, b := range strb { // 循环遍历字节数组
		// 将每个字节取反后加77,实现加密,再拼接为字节数组
		strsN = append(strsN, ^b+77)
	}
	return strsN // 返回加密后的字节数组
}

func main() {
	// 加密过程
	str := "我的原始数据"
	strByte := []byte(str)             // 字符串转为字节数组
	negStrBtye := GetNegation(strByte) // 加密,生成加密后的字节数组
	negStr := string(negStrBtye)       // 加密后的字节数组转为字符串
	fmt.Println("字符串:", str)
	fmt.Println("字符串的字节数组:", strByte)
	fmt.Println("加密后的字节数组:", negStrBtye)
	fmt.Println("加密后的字符串:", negStr)

	//解密过程
	negStrBtye2 := []byte(negStr)          // 加密后的字符串转为字节数组
	decodeByte := GetNegation(negStrBtye2) //解密,生成解密后的字节数组
	decodeStr := string(decodeByte)        // 转为解密后的字符串
	fmt.Println("加密后的字节数组:", negStrBtye2)
	fmt.Println("解密后的字节数组:", decodeByte)
	fmt.Println("解密后的字符串:", decodeStr)
}

完整输出:

字符串: 我的原始数据
字符串的字节数组: [230 136 145 231 154 132 229 142 159 229 167 139 230 149 176 230 141 174]
加密后的字节数组: [102 196 187 101 178 200 103 190 173 103 165 193 102 183 156 102 191 158]
加密后的字符串: fĻe��g��g��f��f��
加密后的字节数组: [102 196 187 101 178 200 103 190 173 103 165 193 102 183 156 102 191 158]
解密后的字节数组: [230 136 145 231 154 132 229 142 159 229 167 139 230 149 176 230 141 174]
解密后的字符串: 我的原始数据

注:解密时,不能手动复制输出结果作为解密数据,因为加密数据中有很多无法显示的字符,手动复制只是复制的可见的字符。可加密后用程序保存在文件中,然后用程序读取后解密。