国密sm2/sm3/sm4

1.安装两个依赖

//sm3 sm4
xiuchuan/ecc //要求php7.4


//sm2
lpilp/splsm2


2.测试

<?php

include './vendor/autoload.php';

use Xiuchuan\Ecc\MySm2;
use Xiuchuan\Ecc\MySm3;
use Xiuchuan\Ecc\MySm4;
use Lpilp\Splsm2\smecc\SPLSM2\SimpleSm2;

//生成证书
$a = new MySm2();
$b = $a->generatekey();

var_dump($b);
$pri_key = $b[0];
$pub_key = $b[1];

$str = str_repeat('abc',20);

$str2 = $a->doSign($str,$pri_key);

var_dump($str2);

//sm3可用
$str = 'aaaa';
$sm3 = new MySm3();
$sign = $sm3->digest($str);
var_dump($sign);

//sm4可用
$sm4 = new MySm4();

$key = md5(1);

$file = file_get_contents('./api.pdf');

$sm4key = $sm4->setKey($key);

$enc = $sm4key->encryptData($file);

var_dump($enc);


$dec = $sm4key->decryptData($enc);

file_put_contents('333.pdf',$dec);


//lpilp sm2测试
//
$publicKey = '0470f2d14e2e7131e6fe4c00c7d9b4ab19f41bdc6a7fa9c59120e9ba2d3aa43af6b65cf57cbf8e9a296bcdd223ba908d3312dfcab26730f97250cb27c8c3bd5030';
$privateKey = 'a95470032827e012ba6166b2dc876b800821f67942d0aca7ea33b0c0d2ec4403';
$userId = '1234567812345678';

$document = "我爱你ILOVEYOU!";
$ssm2 = new SimpleSm2($privateKey,$publicKey);
// 不随机变,就是固定的文本,固定的密钥,生成的固定的签名,
// 不设置的话缺省是true, 每次的签名都不一样,看对方的需求,有些银行要求每次都变
// $ssm2->set_rand_sign_flag(false);
$ssm2->set_fix_foreignkey_flag(true);

$document = '我爱你ILOVEYOU!';
$ed = $ssm2->encrypt($publicKey,$document);
 var_dump($ed);
$val = $ssm2->decrypt($privateKey,$ed);
var_dump($val);


打赏

看恩吧
网站不承担任何有关评论的责任
  • 最新评论
  • 总共条评论
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦