gpt4 book ai didi

PHP 打包/解包错误

转载 作者:可可西里 更新时间:2023-11-01 00:01:06 27 4
gpt4 key购买 nike

我必须将旧的“加密”数据从旧系统转换为适当的加密算法。我有这段代码:

 function unpackString($s,$l){
$tmp=unpack('c'.$l,$s);
$return=NULL;
foreach($tmp as $v){
if($v>0){
$return.=chr($v);
}
}
return $return;
}
function packString($s,$l){
$return=NULL;
for($i=0;$i<$l;$i++){
$return.=pack('c',ord(substr($s,$i,1)));
}
return $return;
}

$string='StackOverflow Is AWESOME';
$l=strlen($string);

$encoded=packString(base64_encode($string),$l);
$decoded=base64_decode(unpackString($encoded,$l));


echo "\n".$decoded."\n";

为什么输出显示 StackOverflow Is A 而不是 StackOverflow Is AWESOME

最佳答案

base64 编码将字符串的大小扩展了大约 33%。您传递的是原始字符串的长度,而不是 base64 编码的字符串:

StackOverflow Is AWESOME  - 24 chars plaintext
U3RhY2tPdmVyZmxvdyBJcyBBV0VTT01F - 32 chars base64 encoded

所以你砍掉了 8 个字符,剩下

U3RhY2tPdmVyZmxvdyBJcyBB

解码为

StackOverflow Is A

关于PHP 打包/解包错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com