Karp 的技术博客

算法概述

加密因子:0xA3

加密算法:将待加密的字符串中的每一个字节,分别与加密因子进行异或,然后将异或后的二进制结果进行高低位交换,然后将交换后的结果转换成2进制字符串。所有的字节转换完成后,将最终的结果base64加密。

解密算法:其实就是加密算法的反向操作。先将加密字符串base64解密,然后字符串的每一个字节(就是上面转的二进制字符串)转换成二进制,再将二进制高低位交换、异或,最后将二进制转换成字符。

/**
 * 加密算法
 */
function encrypt($str, $secret)
{
    // 存放结果字符串
    $result = ''; 
    // 加密
    for($i = 0; $i < strlen($str); $i++) {
        // 异或
        $xor = ord($str[$i]) ^ hexdec($secret);
        // 转二进制
        $binary = decbin($xor);
        // 高低位交换
        $reverse = implode('', array_reverse(str_split($binary, 4)));
        // 转换成16进制,如果出现1位的情况,左侧补0
        $encodeData = str_pad(base_convert($reverse, 2, 16), 2, '0', STR_PAD_LEFT);
        // 16进制转二进制字符串
        $result .= pack('H*', $encodeData);
    }
    return base64_encode($result);
}

php

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2023年01月06日 03:23
10

目录

来自 《PHP的一套位移加密算法》
774 文章数
0 评论量
9 分类数
779 页面数
已在风雨中度过 9年277天3小时53分