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。具体的加密过程如下:

  1. 从 key_name 的末尾取出 3 个字符,将其转换为整数 li_rand。

  2. 将 key_name 的末尾 3 个字符去掉,剩下的字符串为 ls_key_name。

  3. 计算 ls_key_name 的长度 li_string_len,并将其减去 3,再除以 3,得到一个整数 li_string_len。

  4. 从 ls_key_name 中按照每 3 个字符一组的方式取出 li_string_len 组字符,每组字符转换为整数 li_this_char。

  5. 对于每组字符,将 li_this_char 减去 li_rand,再减去当前组的编号 i,再减去 1,得到一个新的整数值。

  6. 将上一步得到的整数值转换为对应的字符,并将这些字符依次拼接在一起,得到最终的加密字符串 ls_name。

  7. 将 ls_name 作为函数的返回值。

代码解析

  1. 变量定义
  • 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 个字符转换为的整数。
  1. 初始化
  • 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 为空字符串。
  1. 循环加密
  • 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 中。
  1. 返回值
  • RETURN ls_name: 返回加密后的字符串 ls_name。

总结

该代码实现了一个简单的字符串加密函数,其核心思路是利用字符串截取、字符转换、循环运算等步骤,对输入的 key_name 字符串进行加密,生成一个新的字符串 ls_name。虽然该加密方法比较简单,但它可以作为一个基础示例,帮助理解字符串加密的基本原理。

PHP 字符串加密函数 f_getname() 的实现原理及代码分析

原文地址: https://www.cveoy.top/t/topic/nKUj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录