首页 > 编程语言 >PHP 简易的BASE64加密

PHP 简易的BASE64加密

时间:2024-12-20 17:19:35浏览次数:3  
标签:加密 17 BASE64 78 密钥 100 PHP 65

有这样一个有趣的公式:x<100;  (x*53*17)%100 = x;
这个公司的原理:53*17=901,x*901,的数后2位数还是x;任何符合 a * b = 100 * n +1 的值都可以。
根据这个原理就可以做一个简单的加密操作。
比如要加密的数是 26,使用(17*53)%100=78,加密后的值是78,在用(78*17)%100=26;
这样53就是加密的密钥,而17就时解密的密钥。
利用这个原理,通过base64加密字符串后,得到了 A~Z a~z 0~9 +/= 共65个字符。
利用 x < 65,则 (x*31*21)%65=x 就可以实现base64的简单加密了。
31就时加密密钥,21就时解密密钥,当然只要符合这个公式( a * b = 65 * n + 1)的 a,b 值都可替换。

PHP 实现的代码如下:

<?php

// 利用 x < 65,则 x*31*21 再取余65 得到的就时原值
// 100取余时,可以使用 (x*53*17)%100 = x

// 加密
function zencode($s)
{
    $s = base64_encode($s);
    $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
    $s1 = '';
    for ($i=0; $i<strlen($s); $i++){
        $v = strpos($chars, $s[$i]);
        $v *= 31;
        $v = $v % 65;
        $s1 .= $chars[$v];
    }
    
    return $s1;
}

// 解密
function zdecode($s)
{
    $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
    $s1 = '';
    for ($i=0; $i<strlen($s); $i++){
        $v = strpos($chars, $s[$i]);
        $v *= 21;
        $v = $v % 65;
        $s1 .= $chars[$v];
    }
    
    $s2 = base64_decode($s1);
    
    return $s2;
}

$str = 'abc中国人民HELLO123!';
$s = zencode($str);
$s1 = zdecode($s);

echo '原文:' . $str . PHP_EOL;
echo '加密:' . $s . PHP_EOL;
echo '解密:' . $s1;

 

标签:加密,17,BASE64,78,密钥,100,PHP,65
From: https://www.cnblogs.com/zjfree/p/18619646

相关文章

  • 工具分享 | TPscan - 一键ThinkPHP漏洞检测getshell
    0x00工具介绍TPscan是一款基于Python3的ThinkPHP漏洞检测工具。0x01下载链接TPscan下载链接:Tpscan下载0x02功能介绍thinkphp_checkcode_time_sqli_verifythinkphp_construct_code_exec_verifythinkphp_construct_debug_rce_verifythinkphp_debug_index_ids_sqli_v......
  • 人民网留言板加密参数(纯算)
    ====老规矩,依旧免费,每天一个解密!代码在最底部====官网地址:领导留言板-人民网具体是下图的这个参数一、加密参数分析1.参数定位上来就一个冒号大法,很明显和接口中的四个参数都对上了。直接给他一个断点2.看看都传了些什么参数给i()方法多选几个搜索条件请求分析,发现......
  • vue3+vant-ui 上传头像,base64文件流上传及回显
    1<scriptsetup>2import{onMounted,reactive}from"vue";3import{useRouter}from"vue-router";4importrequestfrom'@/utils/request';5import{removeEmptyProps,generatehashcode}from'@/utils/......
  • 代码保护与加密
    代码安全有两种方式:一种是Lockflash,一个是代码加密。.Lockflash:Lockflash是在烧录代码后,锁定flash,防止外部对flash中内容的读取。如果有unlock的动作,会触发清空的动作。Lock动作是在downloader时执行的。该动作的使能,需要在platformio.ini里增加配置:lock_flash=tr......
  • # 使用映射表加密字符串
    #使用映射表加密字符串#创建映射表table=str.maketrans("aeiou","12345")print("helloworld".translate(table))#使用str.translate方法,将转换后的文本还原为原文本#创建原始字符到数字的映射表original_table=str.maketrans("aeiou","12345")#......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,机房预约系统小程序被用户普遍使用,为方便用户能够可以随时进行机房预约系统小程序的数据信息管理,特开发了基于机房预约系统......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,校园商店当然也不能排除在外。校园商店是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进行......
  • PHP Cookie
    Cookie是什么?cookie常用于识别用户。cookie是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送cookie。通过PHP,您能够创建并取回cookie的值。如何创建Cookie?setcookie()函数用于设置cookie。注释:setcookie()函数......
  • 手把手教你springboot中的密码加密
    1.引入SpringSecurity依赖首先,需要在pom.xml中添加SpringSecurity依赖,因为BCryptPasswordEncoder是SpringSecurity提供的类:<dependencies><!--SpringSecurity依赖--><dependency><groupId>org.springframework.boot</groupId>......
  • 一文搞懂编程在密码学与区块链加密中的应用
    ```html 一文搞懂编程在密码学与区块链加密中的应用随着科技的飞速发展,密码学和区块链技术成为了信息安全领域的重要组成部分。它们不仅为数据提供了强大的保护机制,还为金融、医疗、法律等多个行业带来了革命性的变化。本文将深入探讨编程语言如何在这些领域中发挥关键作用。......