PHP如何按指定解码规则反向实现base64编码得到字符串cnGu[R>>
问题原因
你的编码逻辑存在两处错误:
- 执行顺序颠倒:解码流程是「自定义字符处理→base64解码」,反向编码需要按相反顺序执行,即「base64编码→自定义字符处理」
- 自定义处理逻辑反向:原
fn_one是将每个字符的ASCII值减1,编码时需要执行逆操作,将每个字符的ASCII值加1
正确实现代码
// 原解码用自定义函数 function fn_one($a){ $c=''; for ($i=0;$i < strlen($a);$i++) { $b=ord($a[$i]); $c.=chr(--$b); } return $c; } // 新增编码用逆操作函数 function fn_one_reverse($a){ $c=''; for ($i=0;$i < strlen($a);$i++) { $b=ord($a[$i]); $c.=chr(++$b); } return $c; } // 编码逻辑,兼容你原有的call_user_func写法也可直接调用函数 $plaintext = "name"; $encode = call_user_func("fn_one_reverse", call_user_func("base64_encode", $plaintext)); echo $encode; // 输出结果为:cnGu[R>> // 可验证解码逻辑匹配原有逻辑 $decode = call_user_func("base64_decode", call_user_func("fn_one", $encode)); echo $decode; // 输出结果为:name
内容的提问来源于stack exchange,提问作者kenlly
相关产品推荐
相关产品推荐

