PHP 字符串加密函数 f_getname() 的实现原理及代码分析
PHP 字符串加密函数 f_getname() 的实现原理及代码分析
//Public function f_getname (string key_name) returns string
//string key_name
string ls_every_char
string ls_key_name
string ls_name
integer li_string_len
integer li_this_char
integer i
integer li_rand
ls_key_name = key_name
li_string_len = len(ls_key_name)
li_rand = integer(right(ls_key_name,3))
ls_key_name = left(ls_key_name,li_string_len - 3)
li_string_len = (li_string_len - 3) / 3
ls_name = ''
FOR i = 0 TO (li_string_len - 1) //6
li_this_char = integer(mid(ls_key_name,(3 * i) + 1,3))
ls_every_char = char(li_this_char - li_rand - i - 1)
ls_name = ls_name + ls_every_char
NEXT //6
RETURN ls_name
这段代码的计算方法是将给定的 key_name 字符串进行加密,生成一个新的字符串 ls_name。具体的加密过程如下:
-
从 key_name 的末尾取出 3 个字符,将其转换为整数 li_rand。
-
将 key_name 的末尾 3 个字符去掉,剩下的字符串为 ls_key_name。
-
计算 ls_key_name 的长度 li_string_len,并将其减去 3,再除以 3,得到一个整数 li_string_len。
-
从 ls_key_name 中按照每 3 个字符一组的方式取出 li_string_len 组字符,每组字符转换为整数 li_this_char。
-
对于每组字符,将 li_this_char 减去 li_rand,再减去当前组的编号 i,再减去 1,得到一个新的整数值。
-
将上一步得到的整数值转换为对应的字符,并将这些字符依次拼接在一起,得到最终的加密字符串 ls_name。
-
将 ls_name 作为函数的返回值。
代码解析
- 变量定义
key_name: 输入的待加密字符串。ls_every_char: 存储每组字符转换后的单个字符。ls_key_name: 存储 key_name 去掉末尾 3 个字符后的字符串。ls_name: 存储最终的加密字符串。li_string_len: 存储 ls_key_name 的长度(除以 3 后)。li_this_char: 存储每组字符转换为的整数。i: 循环变量,表示当前组的编号。li_rand: 存储 key_name 末尾 3 个字符转换为的整数。
- 初始化
ls_key_name = key_name: 初始化 ls_key_name 为 key_name。li_string_len = len(ls_key_name): 计算 ls_key_name 的长度。li_rand = integer(right(ls_key_name,3)): 取出 key_name 末尾 3 个字符并转换为整数。ls_key_name = left(ls_key_name,li_string_len - 3): 去掉 key_name 的末尾 3 个字符。li_string_len = (li_string_len - 3) / 3: 计算 ls_key_name 的长度(除以 3 后)。ls_name = '': 初始化加密字符串 ls_name 为空字符串。
- 循环加密
FOR i = 0 TO (li_string_len - 1): 循环遍历每组字符。li_this_char = integer(mid(ls_key_name,(3 * i) + 1,3)): 取出当前组的 3 个字符并转换为整数。ls_every_char = char(li_this_char - li_rand - i - 1): 将 li_this_char 减去 li_rand、i 和 1,然后转换为对应的字符。ls_name = ls_name + ls_every_char: 将当前组加密后的字符添加到 ls_name 中。
- 返回值
RETURN ls_name: 返回加密后的字符串 ls_name。
总结
该代码实现了一个简单的字符串加密函数,其核心思路是利用字符串截取、字符转换、循环运算等步骤,对输入的 key_name 字符串进行加密,生成一个新的字符串 ls_name。虽然该加密方法比较简单,但它可以作为一个基础示例,帮助理解字符串加密的基本原理。
原文地址: https://www.cveoy.top/t/topic/nKUj 著作权归作者所有。请勿转载和采集!