一、加密、解密代码:
// 传入一个字节数组,加密后返回字节数组
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]
解密后的字符串: 我的原始数据
注:解密时,不能手动复制输出结果作为解密数据,因为加密数据中有很多无法显示的字符,手动复制只是复制的可见的字符。可加密后用程序保存在文件中,然后用程序读取后解密。