one-sm 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
one-sm 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
one-sm 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
one-sm 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
one-sm 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 PHP 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
提 交 者 意简美
适用人群 未知
收录时间 2021-02-03

软件简介

这是一个PHP国密算法库,支持:

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

安装

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);
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (1)

加载中
打分: 还行
就是一个插件吧?
02/03 11:44
回复
举报
更多评论
发表于信息安全专区
02/04 11:32

PHP 国密库 one-sm 1.9 发布

PHP 国密库 one-sm 1.9 已经发布。 新增 sm4 加密算法 cfb ofb ctr 到此已完整支持常用的 ECB/CBC/CFB/OFB/CTR 五中加解密方式。 关于one-sm 源码地址 https://github.com/lizhichao/sm https://gitee.com/vicself/sm 安装 composer require lizhichao/one-sm SM3签名 <?php require __DIR__ . '/vendor/autoload.php'; $sm3 = new \OneSm\Sm3(); // 字符串签名 echo $sm3->sign('abc') . PHP_EOL; echo $sm3->sig...

6
8
发表了资讯
02/03 10:07

php 国密库 one-sm 1.6 发布

新增 sm4 加解密算法 增加了单元测试 关于one-sm 源码地址 https://github.com/lizhichao/sm https://gitee.com/vicself/sm 安装 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(__F...

0
5
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2019/02/01 15:31

C# SM加密

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Org.BouncyCastle.Math; using Org.BouncyCastle.Math.EC; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.Digests; using Org.BouncyCastle.Security; namespace ConsoleApplication1 {     public class SM2     ...

0
0
2019/10/18 11:23

SM_INTEGRATION_SRV

Created by Wang, Jerry, last modified on Mar 26, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙": 本文分享 CSDN - 汪子熙。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

0
0
发表于开发技能专区
2014/07/30 10:02

EditorGridPanel中的sm属性

在EditorGridPanel中,当单击某个单元格时,默认是选择一个单独的cell,如果想让选择一行,要在EditGridPanel中添加sm属性,如下 sm: new Ext.grid.RowSelectionModel({//gridpanel默认是单元格cell选择,加上sm就成了行选择了  singleSelect: true  })  这样,就是选中一行了,如果没有以上的配置下面这行代码在执行时会报...

0
0
发表于软件架构专区
01/10 18:15

SM双生进程是如何通讯的?

数据库与微服务架构,有很多有意思的话题: (1)数据库主从不一致,要如何解决? (2)数据库主主不一致,要如何解决? (3)数据层如何做到无限容量? (4)如何快速提升数据库性能? (5)微服务高并发写缓存可能出现什么问题? (6)微服务如何高效派发并发请求? (7)多机房多活,如何单元化? (8)SM(ServiceMesh)双生进程如何通讯? 今天和大家聊一聊上面这些问题。 事件:在线直播 话题:《数据库与微服务,常见困惑与...

0
0
发表了博客
2020/01/06 09:40

SM系列国密算法

SM系列国密算法 来源 https://www.cnblogs.com/lyh523329053/p/10238260.html 众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现。其中SM1...

0
0
发表于软件架构专区
2018/02/05 14:25

SM2算法原理及实现

RSA算法的危机在于其纯在压指数算法,对ECC算法而言一般没有亚指数攻击算法 SM2椭圆曲线公钥密码算法:我国自主知识产权的商用密码算法,是ECC(Elliptic Curve Cryptosystem)算法的一种,基于椭圆曲线离散对数问题,计算复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆曲线密码较其他公钥秒速昂发所需密钥长度小很多。 ECC算法描述:   1、用户A选定一条适合加密的椭圆曲线Ep(a,b)(如:y2=x3+ax+b),并取椭圆曲线上...

0
2
发表了博客
2020/05/10 07:09

实现SM图床上传

网址这里的 https://doc.sm.ms/#api-Image-Upload 图片上传 这些免费的 1 HTML部分 <form enctype="multipart/form-data" method="post" Authorization="14ac5499cfdd2bb2859e4476d2e5b1d2bad079bf" action="https://sm.ms/api/v2/upload" id = "upform"> <div id = "interface"><img src="img/zb.png" align=left width=200 height=200></img><img src="img/zb.png" align=right width=200 height=200></img>...

0
0
2019/05/20 18:00

PM到SM,个人蜕变&组织转型

作者简介 李卫红,曾在博世工作13年+,从项目经理,到项目管理流程,考核,培训,教练体系的构建,再到项目经理团队的管理;再到敏捷转型中,整个体系的重构,部门实现自主管理;以自身的践行撬动组织系统变革的启动。 团队开始敏捷方法的实践,尝试了三个月之后,项目经理们困惑了,一个巨大的“哲学”问题摆在面前: 我 是 谁? 公司的组织架构中定义的正式岗位是—— 项目经理;可是在scrum 中,没有项目经理,参照第一个项目...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
1 评论
7 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部