golang|python简单与运算实现的对称加密算法

AndyHua仔仔 · · 1073 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

package main

import (
	"fmt"
	"strconv"
	"strings"
)

func encryptData(code_data string, callback_key string) string {
	dataArr := []rune(code_data)
	keyArr := []byte(callback_key)
	keyLen := len(keyArr)

	var tmpList []int

	for index, value := range dataArr {
		base := int(value)
		dataString := base + int(0xFF&keyArr[index%keyLen])
		tmpList = append(tmpList, dataString)
	}

	var str string

	for _, value := range tmpList {
		str += "@" + fmt.Sprintf("%d", value)
	}
	return str
}

func decryptData(nt_data string, callback_key string) string {
	strLen := len(nt_data)
	newData := []rune(nt_data)
	resultData := string(newData[1:strLen])
	dataArr := strings.Split(resultData, "@")
	keyArr := []byte(callback_key)
	keyLen := len(keyArr)

	var tmpList []int

	for index, value := range dataArr {
		base, _ := strconv.Atoi(value)
		dataString := base - int(0xFF&keyArr[index%keyLen])
		tmpList = append(tmpList, dataString)
	}

	var str string

	for _, val := range tmpList {
		str += string(rune(val))
	}
	return str
}

func main() {
	testData := "#test %data _code$@这是一个简单的测试示例===*******~!@#¥%……&*()——+"
	testKey := "test! key"

	encode := encryptData(testData, testKey)
	fmt.Println(encode)
	decode := decryptData(encode, testKey)
	fmt.Println(decode)
}

 


class cryptDataClass:

	def getByte(self, data):
		tmp = [];
		for s in data:
			tmp.append(ord(s));
		return tmp;
		
	def getChars(self, byte):
		str = '';
		for n in byte:
			str += chr(n);
		return str;
		
	def encryptData(self, data, keys):
		tmpList = [];
		dataArr = self.getByte(data);
		keyArr = self.getByte(keys);
		keyLen = len(keyArr);
		for index,value in enumerate(dataArr):
			tmpList.append(str((0xFF & value) + (0xFF & keyArr[index % keyLen])));
		return "@" + "@".join(tmpList);
	
	def decryptData(self, data, keys):
		tmpList = [];
		dataArr = data.split("@");
		del(dataArr[0]);
		keyArr = self.getByte(keys);
		keyLen = len(keyArr);
		for index,value in enumerate(dataArr):
			tmpList.append(int(value) - (0xFF & keyArr[index % keyLen]) );
		return self.getChars(tmpList);
		
		

data = '#test %data _code$@这是一个简单的测试示例===*******~!@#¥%……&*()——+';
key = 'test! key';
cc = cryptDataClass();
endata = cc.encryptData(data, key);
print endata;
dedata = cc.decryptData(endata, key)
print dedata;

 


有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:AndyHua仔仔

查看原文:golang|python简单与运算实现的对称加密算法

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1073 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传