这是一个常规的稳定性更新,没有不向后兼容的变更和新特性
近期原则上没有其他版本的更新计划
- 主要修复了一个
php5.5
之前 版本 生成摘要值错误 的问题 - 当前 1.x 版本号不再保证 PHP 高版本的兼容性,高版本推荐使用 openssl 扩展
- 完善的单元测试和 ci 的可用性
- 更新了示例文件
- 更新了协议
- 增加了 Readme 中的徽标
- 新增了用于单元测试的脚本
- 添加了 docs/ 目录
- 更新了自动构建的逻辑,现在自动构建的产物会直接提交到 pre-build 分支,用于版本发布时的文件预构建
- 更新了主方法参数的校验逻辑
- 更新了
sm3()
主方法的测试用例 - 更新了依赖版本
- 修改了
- 介于
phpunit
的兼容性,不再保证 php7.2+ 版本的兼容,1.x版本今后只作为低版本的兼容,
- 无
- #10
php 5.5 版本
unpack()
参数变更未做兼容导致 之前版本生成的摘要值错误 的问题
- 更新了示例中的文档
- 更新了示例中的依赖版本
- 修复文档中格式错乱的问题
- 更新了协议
- 添加了对于字符串 '010101' 的测试用例
- 合并了 pr #3 中, 二进制数未当做字符串处理的问题
- 在 Composer 中添加了默认的阿里云镜像,方便使用
- 添加了对于字符串'a a'的测试用例
- 添加了对于字符串"a\r\na"、"a\ra"和"a\na"的测试用例
- 项目现在遵循PSR-12规范
- 无
- 配置文件
- 配置文件类
- \SM3\types\ASCII类
值得一提的是,由于算法是按位的,所以在处理不同系统中的换行时,需要区分 LF/CR/CRLF, 针对这三种系统中的换行,计算出来的值也是不同的。如:
array(
array("a\na"=>'c413edbaa5449ada676857e243ae8d66401d82474cc68c243950178280bf7ae0'),
array("a\ra"=>'75056f768d1ac970ef2faf58ae4be4666afc157e2cb87b9e08c526463bf787da'),
array("a\r\na"=>'d1041bb570f8c65e26299159e41e21961d0ce4b79a285ee32c75c11eab0a2dd7')
)
其中,Linux(\n)下的值,与苍墨安全中的计算结果相同。
Windows(\r\n)下、OS X(\n)下和Classic Mac(\r)无对照结果,暂时未测试,欢迎反馈。
- 添加了本 CHANGELOG.md 文件
- 发布在了 Packagist 上
- 添加了 examples/ 目录
- 添加了 examples/sm3/ 目录, 进行了本库两种调用方式的用法示例,和区别说明
- 添加了几个语法糖:
sm3
函数现可直接调用- 参数:待运算的
string
类型字符串
- 参数:待运算的
- 二进制的与、或、非、异或、加算法:
- 暂时返回32位长度的字符串,不够补0,超了保留从右往左数的32位。计划移除掉这个限制
- 并非是运算过程中转换的32位,而是计算完之后转换的
binAdd
二进制加运算- 参数:由
string
类型的二进制码组成的数组 - 示例(以下的二进制与、或、加同理):
$bin_sum = bin_add(array( '101111011110111', '0010110111', '1100010111101111011110111' )); // 会输出32位的string类型二进制码 var_dump($bin_sum);
- 参数:由
binAnd
二进制加运算- 参数:同
bin_add
- 示例:同
bin_add
- 参数:同
binOr
二进制或运算- 参数:同
bin_add
- 示例:同
bin_add
- 参数:同
binXor
二进制异或运算- 参数:同
bin_add
- 示例:同
bin_add
- 参数:同
binNot
二进制非运算- 参数:
string
类型的二进制码 - 示例:
$bin_not = bin_not('1100010111101111011110111'); // 会输出32位的string类型二进制码 var_dump($bin_not);
- 参数:
binShiftLeft
二进制左移- 参数:
string
类型的二进制码- 需要左移的位数
- 示例:
$bin_shift_left = binShiftLeft('1101000',2); // 会输出32位的string类型二进制码 var_dump($bin_shift_left);
- 参数:
- 暂时返回32位长度的字符串,不够补0,超了保留从右往左数的32位。计划移除掉这个限制
- 更新了 README.md 中的 安装 和 快速开始 中的安装/调用方法
- 无
- 无
- 无
实现了国密 《SM3 信息摘要 算法》 的逻辑