#
~~~
function base58_encode($string)
{
$alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
$base = strlen($alphabet);
if (is_string($string) === false) {
return false;
}
if (strlen($string) === 0) {
return '';
}
$bytes = array_values(unpack('C*', $string));
$decimal = $bytes[0];
for ($i = 1, $l = count($bytes); $i < $l; $i++) {
$decimal = bcmul($decimal, 256);
$decimal = bcadd($decimal, $bytes[$i]);
}
$output = '';
while ($decimal >= $base) {
$div = bcdiv($decimal, $base, 0);
$mod = bcmod($decimal, $base);
$output .= $alphabet[$mod];
$decimal = $div;
}
if ($decimal > 0) {
$output .= $alphabet[$decimal];
}
$output = strrev($output);
foreach ($bytes as $byte) {
if ($byte === 0) {
$output = $alphabet[0] . $output;
continue;
}
break;
}
return (string) $output;
}
function base58_decode($base58)
{
if (is_string($base58) === false) {
return false;
}
if (strlen($base58) === 0) {
return '';
}
$indexes = array_flip(str_split($this->alphabet));
$chars = str_split($base58);
foreach ($chars as $char) {
if (isset($indexes[$char]) === false) {
return false;
}
}
$decimal = $indexes[$chars[0]];
for ($i = 1, $l = count($chars); $i < $l; $i++) {
$decimal = bcmul($decimal, $this->base);
$decimal = bcadd($decimal, $indexes[$chars[$i]]);
}
$output = '';
while ($decimal > 0) {
$byte = bcmod($decimal, 256);
$output = pack('C', $byte) . $output;
$decimal = bcdiv($decimal, 256, 0);
}
foreach ($chars as $char) {
if ($indexes[$char] === 0) {
$output = "\x00" . $output;
continue;
}
break;
}
return $output;
}
~~~
- 前言
- PHP获取服务器信息
- PHP中的常用函数-新手必备知识
- 日期时间相关的函数
- 时区设置
- time函数
- strtotime 时间戳
- date函数
- mktime函数
- 联合使用 date() 和 mktime()
- PHP数据类型相关的函数
- PHP数组相关的函数
- array函数
- 数组的排序
- sort()和rsort()函数
- asort()和arsort()函数
- ksort()和krsort()函数
- array_multisort()函数
- array_reverse函数
- 数组的遍历
- 数组中新增和删除元素
- 数组头部插入和删除元素
- 数组尾部插入和删除元素
- 删除数组中重复的元素
- 删除数组中指定的元素
- 数组的合并
- 随机/打乱已知数组
- range函数
- 数组去除重复
- PHP常用功能函数
- URL地址处理函数
- post/get请求
- PHP字符串相关的函数
- PHP文件系统
- PHP正则表达式
- 正则表达式语法规则
- POSIX扩展的正则表达式函数
- 查找字串函数
- 替换字符串函数
- Perl兼容的正则表达式函数
- PHP中类的应用
- 中文编码
- 关于stdClass
- 变量相关函数
- unset
- PHP数值相关的函数
- 数值取整
- 开发工具与开发环境使用技巧
- sublime
- 常用插件
- Atom
- 常用插件
- 常见问题
- Visual Studio Code
- vscode常用插件
- 编程推荐字体
- MAC下开发常识
- MAC下的常用设置
- MAC下的常用开发工具
- MAC下XAMMP的常见问题
- Apache配置基础
- PhpStrom
- php中的常见问题
- 文件上传相关问题
- API接口中常见问题
- 关于缓冲区问题
- PHP中注意事项
- 条件判断
- PHP文件管理模块
- 文件管理源码
- 文件管理的常用函数
- 文件管理中文乱码处理
- 自定义功能函数
- 文件下载
- PHP常用头信息定义汇总
- 常见PHP网页木马
- 加密算法
- 1. Base58可逆加密
- 2. AES加密/解密
- mysql数据库操作
- 命令行操作Mysql常用令行-查询
- 命令行操作Mysql常用令行-操作
- Mysql使用中的技巧
- 在线数据库管理中常用命令
- sql show命令
- mysql数据库的备份与恢复
- 二进制日志介绍
- 二进制日志常用命令
- ThinkPHP
- 数据迁移
- 常见问题
- 验证码问题
- API接口中的异常处理
- API接口安全
- 解决跨域问题
- 自定义实用功能函数