Skip to content

lizhichao/sm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

性能最好的php国密算法

  • sm3
    • 字符串签名
    • 文件签名
  • sm4
    • ecb
    • cbc
    • cfb
    • ofb
    • ctr

安装

composer require lizhichao/one-sm

SM3签名

<?php require __DIR__ . '/vendor/autoload.php'; $sm3 = new \OneSm\Sm3(); // 字符串签名 echo $sm3->sign('abc') . PHP_EOL; echo $sm3->sign(str_repeat("adfas哈哈哈", 100)) . PHP_EOL; // 文件签名 echo $sm3->signFile(__FILE__) . PHP_EOL;

性能测试

openssl , SM3-PHP 性能测试

php bench.php

结果

openssl:4901d7181a1024b8c0f59b8d3c5c6d96b4b707ad10e8ebc8ece5dc49364a3067 one-sm3:4901d7181a1024b8c0f59b8d3c5c6d96b4b707ad10e8ebc8ece5dc49364a3067 SM3-PHP:4901d7181a1024b8c0f59b8d3c5c6d96b4b707ad10e8ebc8ece5dc49364a3067 openssl time:6.3741207122803ms one-sm3 time:8.1770420074463ms SM3-PHP time:1738.5928630829ms 

测试代码bench.php

SM4加密

<?php use OneSm\Sm4; require __DIR__ . '/vendor/autoload.php'; $data = str_repeat('阿斯顿发到付eeee', 160); $str_len = strlen($data); // md5 签名 $sign = md5($data); // 加密key必须为16位 $key = hex2bin(md5(1)); $sm4 = new Sm4($key); // ECB加密 $d = $sm4->enDataEcb($data); // 加密后的长度和原数据长度一致 var_dump(strlen($d) === $str_len); // ECB解密 $d = $sm4->deDataEcb($d); // 解密后和原数据相等 var_dump(md5($d) === $sign); // 初始化向量16位 $iv = hex2bin(md5(2)); // CBC加密 $d = $sm4->enDataCbc($data, $iv); // 加密后的长度和原数据长度一致 var_dump(strlen($d)===$str_len); // CBC解密 $d = $sm4->deDataCbc($d, $iv); // 解密后和原数据相等 var_dump(md5($d)===$sign);

我的其他仓库

About

php国密SM3,sm4算法

Topics

Resources

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors

Languages