1. 大恩算法
python
def encode(data):
length = len(data)
key = length % 254 + 1
ret = []
for i in range(length):
ret.append(chr(ord(data[i]) ^ key))
return ''.join(ret)
text = "adsad"
a = encode(text)
b = encode(a)
print("明文",text)
print("加密值",a)
print("解密值",b)
# 明文 adsad
# 加密值 gbugb
# 解密值 adsad
易语言
.版本 2
.支持库 spec
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 text, 文本型
.局部变量 a, 字节集
.局部变量 b, 字节集
text = “adsad”
a = 大恩_加密 (到字节集 (text))
b = 大恩_解密 (a)
调试输出 (“明文”, text)
调试输出 (“加密值”, 到文本 (a))
调试输出 (“解密值”, 到文本 (b))
' [14:54:38] * “明文” | “adsad”
' [14:54:38] * “加密值” | “gbugb”
' [14:54:38] * “解密值” | “adsad”
' 解密算法 也一样
.子程序 大恩_加密, 字节集, , 这是演示用的简单异或算法,你可以修改成复杂算法,防止被轻易破解
.参数 数据, 字节集
.局部变量 密匙, 整数型
.局部变量 计次, 整数型
.局部变量 结果, 字节集
.局部变量 长度, 整数型
长度 = 取字节集长度 (数据)
密匙 = 长度 % 254 + 1
结果 = 取空白字节集 (长度)
.计次循环首 (长度, 计次)
结果 [计次] = 位异或 (数据 [计次], 密匙)
.计次循环尾 ()
返回 (结果)
.子程序 大恩_解密, 字节集, , 这是演示用的简单异或算法,你可以修改成复杂算法,防止被轻易破解
.参数 数据, 字节集
.局部变量 长度, 整数型
.局部变量 密匙, 整数型
.局部变量 计次, 整数型
.局部变量 结果, 字节集
长度 = 取字节集长度 (数据)
密匙 = 长度 % 254 + 1
结果 = 取空白字节集 (长度)
.计次循环首 (长度, 计次)
结果 [计次] = 位异或 (数据 [计次], 密匙)
.计次循环尾 ()
返回 (结果)
2.getGTK
javascript
function getGTK(str) {
var hash = 5381;
for (var i = 0, len = str.length; i < len; ++i) {
hash += (hash << 5) + str.charAt(i).charCodeAt();
}
return hash & 0x7fffffff;
}
a = getGTK('@LZyBNccVa');
console.log(a=="1583295761");
python
def getGTK(str):
hash = 5381
for i in range(len(str)):
hash += (hash << 5) + ord(str[i])
return hash & 0x7fffffff
a = getGTK("@LZyBNccVa")
print(str(a)=="1583295761")
易语言
.版本 2
.支持库 spec
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
调试输出 (getGTK (“@LZyBNccVa”) = “1583295761”)
.子程序 getGTK, 文本型
.参数 str, 文本型
.局部变量 hash, 整数型
.局部变量 i, 整数型
hash = 5381
.计次循环首 (取文本长度 (str), i)
hash = hash + 左移 (hash, 5) + 取代码 (取文本中间 (str, i, 1), )
.计次循环尾 ()
返回 (到文本 (位与 (hash, 2147483647)))