卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章1829本站已运行4109

php将字符串进行base64解密,然后取出后面32位,把剩余的存一个变量在把取出来的32位进行分开,前16位保存key 后16位保存 iv

在PHP中,你可以使用base64_decode函数对Base64编码的字符串进行解码。然后,你可以使用字符串操作函数来取得字符串的特定部分,并将其分割为key和iv。下面是一个实现这个过程的PHP函数示例:
function decodeBase64AndSplit($encodedString) {  
    // 对Base64字符串进行解码  
    $decodedString = base64_decode($encodedString, true);  
    if ($decodedString === false) {  
        // 如果解码失败,返回错误信息或处理错误  
        return ['error' => 'Base64解码失败'];  
    }  
  
    // 如果解码后的字符串长度小于32,直接返回整个字符串作为key,iv为空  
    if (strlen($decodedString) < 32) {  
        return ['key' => $decodedString, 'iv' => ''];  
    }  
  
    // 取出后面32位作为key和iv的原始数据  
    $keyIvRaw = substr($decodedString, -32);  
  
    // 剩余的部分(如果有的话)  
    $remainder = substr($decodedString, 0, -32);  
  
    // 将keyIvRaw分割为16位的key和16位的iv  
    $key = substr($keyIvRaw, 0, 16);  
    $iv = substr($keyIvRaw, 16);  
  
    // 返回结果数组  
    return ['key' => $key, 'iv' => $iv, 'remainder' => $remainder];  
}  
  
// 示例使用  
$encodedString = "SnlJU0x3RU1DcUxqa2VvKzJkK2JBQWM7THxtMFMvVlFUa01PNEhXSW9uNE1xcUdpbC83S0JzUVVYSjFFTURuMkFJL1ZIaGxCa093RjFpQU9VRzM1a2FMNy9qbHZ1QUlOT2dEWEVTdUY2WlE9NmU2NjQxOWJhYjM4Nzk3MGJlOGNlODg4N2YzYTQyZWY=";  
$result = decodeBase64AndSplit($encodedString);  
  
// 输出结果  
if (isset($result['error'])) {  
    echo $result['error'];  
} else {  
    echo "Key: " . $result['key'] . PHP_EOL;  
    echo "IV: " . $result['iv'] . PHP_EOL;  
    echo "Remainder: " . $result['remainder'] . PHP_EOL;  
}
请注意,我在示例中对Base64字符串进行了修改,以修复原始字符串中的明显错误(如将THht更改为THxt以匹配Base64编码的常规模式)。如果你提供的Base64字符串不正确,base64_decode函数将返回false,并且上面的函数会捕获这个错误并返回一个包含错误信息的数组。

在上面的代码中,$encodedString是你提供的Base64编码的字符串。decodeBase64AndSplit函数会返回一个包含key、iv和剩余部分的数组。如果解码失败,它将返回一个包含错误信息的数组。
上一篇: Java版 腾讯视频真实地址解析源码 (已失效解析出来的只有3分钟)
下一篇: php 5.6 随机16位字符串

相关推荐

留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏