作者热门文章
- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
有这样一个有趣的公式:x<100; (x*53*17)%100 = x; 这个公式的原理:53*17=901,x*901,的数后2位数还是x;任何符合 a * b = 100 * n +1 的值都可以。 根据这个原理就可以做一个简单的加密操作。 比如要加密的数是 26,使用(26*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;
。
最后此篇关于PHP简易的BASE64加密的文章就讲到这里了,如果你想了解更多关于PHP简易的BASE64加密的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在设计一个可在hbase上运行的应用程序,并且希望以交互方式浏览集群的内容。我在hbase shell中,我想对所有以chars“abc”开头的键进行扫描。这样的键可能包括“abc4”,“abc9
我是一名优秀的程序员,十分优秀!