All Projects → lizhichao → sm

lizhichao / sm

Licence: other
php国密SM3,sm4算法

Programming Languages

PHP
23972 projects - #3 most used programming language

Labels

Projects that are alternatives of or similar to sm

java-gm
Java语言国密基础库
Stars: ✭ 33 (-75%)
Mutual labels:  sm3, sm4
Gmssl
支持国密SM2/SM3/SM4/SM9/ZUC/SSL的OpenSSL分支
Stars: ✭ 2,747 (+1981.06%)
Mutual labels:  sm3, sm4
phpsm2sm3sm4
php版本,支持国密sm2的签名算法,非对称加解密,sm3的hash, sm4的对称加解密
Stars: ✭ 80 (-39.39%)
Mutual labels:  sm3, sm4
libsm
A Rust Library of China's Standards of Encryption Algorithms (SM2/3/4)
Stars: ✭ 112 (-15.15%)
Mutual labels:  sm3, sm4
yogcrypt
A fast, general purpose crypto library in pure Rust.
Stars: ✭ 18 (-86.36%)
Mutual labels:  sm3, sm4
cryptogm
An implement of china crypto standards, including sm2,sm3 ,sm4 and sm9 algorithms.
Stars: ✭ 26 (-80.3%)
Mutual labels:  sm3, sm4
hash-wasm
Lightning fast hash functions using hand-tuned WebAssembly binaries
Stars: ✭ 382 (+189.39%)
Mutual labels:  sm3
ngx http hmac secure link module
HMAC Secure Link module for NGINX.
Stars: ✭ 47 (-64.39%)
Mutual labels:  sm3
pysm4
Python SM4
Stars: ✭ 82 (-37.88%)
Mutual labels:  sm4

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);

我的其他仓库

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].