PHP加密代码分享
酷侠想赚钱ing $__$

PHP加密代码分享

酷侠 努力赚钱ing
3天前发布 /正在检测是否收录...

数据不经加密你能放心,那用户呢?在这里提供一下我使用的加密函数,加密以后只有数字和字母,而且加密结果唯一,支持设置密钥,破解难度嘛,我没试过,你们可以试试(然后我好加固$[泡泡表情]::(滑稽)),欢迎你的采用
加密

function jiami($data, $secretKey) {
    // 验证输入
    if (empty($data) || empty($secretKey)) {
        throw new InvalidArgumentException('密钥为空或加密内容为空');
    }
    
    // 生成固定长度的密钥派生值 (32字节用于AES-256)
    $derivedKey = hash('sha256', $secretKey, true);
    
    // 生成固定IV (基于密钥派生)
    $iv = substr(hash('sha256', 'fixed_iv_salt_' . $secretKey), 0, 16);
    
    // 使用AES-256-CBC加密
    $encrypted = openssl_encrypt(
        $data,
        'aes-256-cbc',
        $derivedKey,
        OPENSSL_RAW_DATA,
        $iv
    );
    
    // 转换为十六进制字符串(仅含字母数字)
    return bin2hex($encrypted);
}

解密

function jiemi($encryptedData, $secretKey) {
    // 验证输入
    if (empty($encryptedData) || empty($secretKey)) {
        throw new InvalidArgumentException('密钥为空或加密内容为空');
    }
    
    // 检查是否为有效十六进制
    if (!ctype_xdigit($encryptedData)) {
        throw new InvalidArgumentException('加密数据格式无效');
    }
    
    // 生成与加密相同的密钥派生值
    $derivedKey = hash('sha256', $secretKey, true);
    
    // 生成相同的固定IV
    $iv = substr(hash('sha256', 'fixed_iv_salt_' . $secretKey), 0, 16);
    
    // 十六进制转二进制
    $decoded = hex2bin($encryptedData);
    if ($decoded === false) {
        throw new RuntimeException('十六进制转换失败');
    }
    
    // 解密数据
    return openssl_decrypt(
        $decoded,
        'aes-256-cbc',
        $derivedKey,
        OPENSSL_RAW_DATA,
        $iv
    );
}

使用实例就是

$secretKey = 'key';//密钥,用于解密
$originalData = '123abcde';//加密内容

加密
$encrypted = jiami($originalData, $secretKey);
echo "Encrypted: " . $encrypted . "\n"; // 输出纯十六进制字符串

解密
$decrypted = jiemi($encrypted, $secretKey);
echo "Decrypted: " . $decrypted . "\n";

道高一尺魔高一丈,没有永远解不开的密码,只有不断尝试的人$[泡泡表情]::(太开心)
可能TA的心是你永远解不开的$[泡泡表情]::(黑线)

喜欢就支持一下吧
点赞 0 分享 赞赏
评论 抢沙发
OωO
取消
SSL