精华内容
下载资源
问答
  • 关于php国密SM3签名算法
    2021-04-15 19:35:38

    推荐:《PHP视频教程》

    php国密SM3签名算法

    代码地址

    github.com/lizhichao/sm

    安装

    composer require lizhichao/one-sm

    使用

    require __DIR__ . '/vendor/autoload.php'; // 字符串签名 echo OneSmSm3::sign('abc') . PHP_EOL; echo OneSmSm3::sign(str_repeat("adfas哈哈哈", 100)) . PHP_EOL; // 文件签名 echo OneSmSm3::signFile(__FILE__) . PHP_EOL;

    性能测试

    和 openssl , SM3-PHP 性能测试

    php bench.php

    结果

    openssl:7ad7adf191f10aeeb0b2c02e083d03c4c675351022b267722c4cc6589c7836e9 one-sm3:7ad7adf191f10aeeb0b2c02e083d03c4c675351022b267722c4cc6589c7836e9SM3-PHP:b7a0c84f86acd90f41f09d791735baf07ddf8acae6349319f5ab71c375fa37cb openssl time:4.755973815918ms one-sm3 time:5.5310726165771msSM3-PHP time:708.27698707581ms

    测试代码bench.php:

    https://github.com/lizhichao/sm/blob/master/bench.php

    更多相关内容
  • php 国密sm3 c扩展 加密

    2018-12-07 16:39:01
    php 国密sm3 c扩展 加密~需要的自己下载!!真实可用。
  • 已在php5环境下验证,php7未验证 编译方法: 1、cd sm3源码目录 2、执行命令 phpize5 3、./configure --with-php-config=/usr/bin/php-config 4、make & make test 验证通过后 make install 5、工程中调用sm3_...
  • SM2,SM4,SM3,国密算法PHP

    热门讨论 2018-08-10 09:15:14
    SM2,SM4,SM3,SM1 PHP版算法实现,亲测可用欢迎大家下载
  • PHP 国密库 one-sm 1.9 已经发布。新增sm4 加密算法cfbofbctr到此已完整支持常用的ECB/CBC/CFB/OFB/CTR 五中加解密方式。关于one-sm源码地址https://github.com/lizhichao/smhttps://gitee.com/vicself/sm安装...

    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签名

    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 性能测试

    结果

    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加密

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

    展开全文
  • php 国密 sm3,sm4 实现

    千次阅读 2021-02-04 17:06:57
    php国密算法 sm3 字符串签名 文件签名 sm4 ecb cbc cfb ofb ctr 安装 composer require lizhichao/one-sm SM3签名 <?php require __DIR__ . '/vendor/autoload.php'; $sm3 = new \OneSm\Sm3(); // ...

    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);
    
    
    展开全文
  • php国密sm4

    2021-01-04 09:34:51
    php Class SM4Util { public $SM4_CK = [ 0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269, 0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9, 0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249

    加解密代码摘自网络,出处忘记了,这里就不附链接,对原创说声抱歉!
    先附上代码:

    <?php
    
    
    Class SM4Util
    {
        public $SM4_CK = [
            0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269,
            0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9,
            0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249,
            0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9,
            0xc0c7ced5, 0xdce3eaf1, 0xf8ff060d, 0x141b2229,
            0x30373e45, 0x4c535a61, 0x686f767d, 0x848b9299,
            0xa0a7aeb5, 0xbcc3cad1, 0xd8dfe6ed, 0xf4fb0209,
            0x10171e25, 0x2c333a41, 0x484f565d, 0x646b7279
        ];
    
        public $SM4_Sbox = [
            0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05,
            0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99,
            0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62,
            0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95, 0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6,
            0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba, 0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8,
            0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b, 0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35,
            0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2, 0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87,
            0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52, 0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e,
            0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5, 0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1,
            0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55, 0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3,
            0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60, 0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f,
            0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f, 0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51,
            0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f, 0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8,
            0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd, 0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0,
            0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e, 0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84,
            0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20, 0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48
        ];
    
        /**
         * 系统参数
         */
        public $SM4_FK = [0xA3B1BAC6, 0x56AA3350, 0x677D9197, 0xB27022DC];
    
        private $key = [];//16个 HEXHEX格式的数组 16字节 128bits  为了操作方便,直接存成十进制
    
        private $skey = [];//记录每轮加密的秘钥 记录成十进制
    
        private $block_size = 32;
    
        /**
         * 字符串转16进制
         * @param $str
         * @return string
         */
        public function strToHex($string){
            $hex="";
            for($i=0;$i<strlen($string);$i++)
                $hex.=dechex(ord($string[$i]));
            $hex=strtoupper($hex);
            if(strlen($hex)>32){
                return substr($hex,0,32);
            }else{
                return $hex;
            }
        }
    
    
        /**设置加密秘钥
         *
         * @param $key 32个十六进制的字符
         *
         * @return $this
         * @throws Exception
         */
        public function setKey($key)
        {
            $key = $this->strToHex($key);
    
            $this->key = $this->preProcess($key);
            $this->setSkey();
    
            return $this;
        }
    
        /**
         * 计算每轮加密需要的秘钥
         */
        private function setSkey()
        {
            $skey = [];
            for ($i = 0; $i < 4; $i++) {
                $skey[] = self::SM4_FK[$i] ^ ($this->key[4 * $i] << 24 | $this->key[4 * $i + 1] << 16 | $this->key[4 * $i + 2] << 8 | $this->key[4 * $i + 3]);
            }
            for ($k = 0; $k < 32; $k++) {
                $tmp = $skey[$k + 1] ^ $skey[$k + 2] ^ $skey[$k + 3] ^ self::SM4_CK[$k];
    
                //非线性化操作
                $buf = (self::SM4_Sbox[($tmp >> 24) & 0xff]) << 24 |
                    (self::SM4_Sbox[($tmp >> 16) & 0xff]) << 16 |
                    (self::SM4_Sbox[($tmp >> 8) & 0xff]) << 8 |
                    (self::SM4_Sbox[$tmp & 0xff]);
                //线性化操作
                $skey[] = $skey[$k] ^ ($buf ^ $this->sm4Rotl32($buf, 13) ^ $this->sm4Rotl32($buf, 23));
                $this->skey[] = $skey[$k + 4];
            }
        }
    
    
        /**32比特的buffer中循环左移n位
         *
         * @param $buf int 可以传递进10进制 也可以是0b开头的二进制
         * @param $n int 向左偏移n位
         *
         * @return int
         * reference http://blog.csdn.net/w845695652/article/details/6522285
         */
        private function sm4Rotl32($buf, $n)
        {
            return (($buf << $n) & 0xffffffff) | ($buf >> (32 - $n));
        }
    
        /**
         * 对字符串加密
         *
         * @param $plainText
         *
         * @return string
         * @throws Exception
         */
        public function encryptData($plainText)
        {
            $bytes = bin2hex($plainText);
    
            $need_pad_length = $this->block_size - strlen($bytes) % $this->block_size;
            $pad_bytes = str_pad(
                $bytes,
                strlen($bytes) + $need_pad_length,
                sprintf("%02x", $need_pad_length / 2),
                STR_PAD_RIGHT
            );
            $chunks = str_split($pad_bytes, $this->block_size);
    
            return strtolower(implode('', array_map(function ($chunk) {
                return $this->encrypt($chunk);
            }, $chunks)));
        }
    
    
        /**SM4加密单个片段(128bit)
         *
         * @param $text string 32个十六进制字符串
         *
         * @return string
         * @throws Exception
         */
        public function encrypt($text)
        {
            $x = $re = [];
            $t = $this->preProcess($text);
    
    
            for ($i = 0; $i < 4; $i++) {
                $x[] = $t[$i * 4] << 24 |
                    $t[$i * 4 + 1] << 16 |
                    $t[$i * 4 + 2] << 8 |
                    $t[$i * 4 + 3];
            }
    
            for ($k = 0; $k < 32; $k++) {
                $tmp = $x[$k + 1] ^ $x[$k + 2] ^ $x[$k + 3] ^ $this->skey[$k];
    
                $buf = self::SM4_Sbox[($tmp >> 24) & 0xff] << 24 |
                    self::SM4_Sbox[($tmp >> 16) & 0xff] << 16 |
                    self::SM4_Sbox[($tmp >> 8) & 0xff] << 8 |
                    self::SM4_Sbox[$tmp & 0xff];
    
                $x[$k + 4] = $x[$k] ^ $buf
                    ^ $this->sm4Rotl32($buf, 2)
                    ^ $this->sm4Rotl32($buf, 10)
                    ^ $this->sm4Rotl32($buf, 18)
                    ^ $this->sm4Rotl32($buf, 24);
            }
            for ($i = 0; $i < 4; $i++) {
                $re[] = ($x[35 - $i] >> 24) & 0xff;
                $re[] = ($x[35 - $i] >> 16) & 0xff;
                $re[] = ($x[35 - $i] >> 8) & 0xff;
                $re[] = $x[35 - $i] & 0xff;
            }
    
            return $this->wrapResult($re);
    
        }
    
    
        /**预处理16字节长度的16进制字符串 返回10进制的数组 数组大小为16
         *
         * @param $text
         *
         * @return array
         * @throws Exception
         */
        private function preProcess($text)
        {
            preg_match('/[0-9a-f]{32}/', strtolower($text), $re);
            if (empty($re)) {
                throw new Exception('error input format!');
            }
            $key = $re[0];
            for ($i = 0; $i < 16; $i++) {
                $result[] = hexdec($key[2 * $i] . $key[2 * $i + 1]);
            }
    
            return $result;
        }
    
        /**将十进制结果包装成16进制字符串输出
         *
         * @param $result
         *
         * @return string
         */
        private function wrapResult($result)
        {
            $hex_str = '';
            foreach ($result as $v) {
                $tmp = dechex($v);
                $len = strlen($tmp);
                if ($len == 1)//不足两位十六进制的数 在前面补一个0,保证输出也是32个16进制字符
                {
                    $hex_str .= '0';
                }
                $hex_str .= $tmp;
            }
    
            return strtoupper($hex_str);
        }
    
    
        /**SM4解密单个片段(128bits)
         *
         * @param $text string 32个16进制字符串
         *
         * @return string
         * @throws Exception
         */
        public function decrypt($text)
        {
            $x = $re = [];
            $t = $this->preProcess($text);
            for ($i = 0; $i < 4; $i++) {
                $x[] = $t[4 * $i] << 24 |
                    $t[4 * $i + 1] << 16 |
                    $t[4 * $i + 2] << 8 |
                    $t[4 * $i + 3];
            }
            for ($k = 0; $k < 32; $k++) {
                $tmp = $x[$k + 1] ^ $x[$k + 2] ^ $x[$k + 3] ^ $this->skey[31 - $k];
                $buf = (self::SM4_Sbox[($tmp >> 24) & 0xff]) << 24 |
                    (self::SM4_Sbox[($tmp >> 16) & 0xff]) << 16 |
                    (self::SM4_Sbox[($tmp >> 8) & 0xff]) << 8 |
                    (self::SM4_Sbox[$tmp & 0xff]);
                $x[$k + 4] = $x[$k] ^ $buf
                    ^ $this->sm4Rotl32($buf, 2)
                    ^ $this->sm4Rotl32($buf, 10)
                    ^ $this->sm4Rotl32($buf, 18)
                    ^ $this->sm4Rotl32($buf, 24);
            }
    
            for ($i = 0; $i < 4; $i++) {
                $re[] = ($x[35 - $i] >> 24) & 0xff;
                $re[] = ($x[35 - $i] >> 16) & 0xff;
                $re[] = ($x[35 - $i] >> 8) & 0xff;
                $re[] = $x[35 - $i] & 0xff;
            }
    
            return $this->wrapResult($re);
        }
    
        public function decryptData($cipherText)
        {
            $chunks = str_split($cipherText, $this->block_size);
            $decrypt_text_data = implode('', array_map(function ($chunk) {
                return $this->decrypt($chunk);
            }, $chunks));
    
            $pad_length = hexdec(substr($decrypt_text_data, -2));
    
            return strtolower(hex2bin(preg_replace(
                sprintf("/%s$/", str_repeat(sprintf("%02x", $pad_length), $pad_length)),
                '',
                $decrypt_text_data
            )));
        }
    
    
    }
    
    $data=[
        "DOC_ID"=>"",'STATE'=>"1"
    ];
    $sm4 = new SM4Util();
    $original_plain_text_data = json_encode($data,true);
    
    $key = 'henan202012272GOVCms';
    
    $origin_encrypted_text = '798c4eceb3a46ca50fe55331e472ffee1b9a88e2847156252c009b3a1c8a1d1c';
    $encrypted_text_data = $sm4->setKey($key)->encryptData($original_plain_text_data);
    echo '<br>';
    echo"自己加密:".$encrypted_text_data;
    echo '<br>长度:'.strlen($encrypted_text_data);
    echo '<br>';
    echo"自己解密:". $sm4->setKey($key)->decryptData($encrypted_text_data);
    
    echo '<br>';
    
    
    
    
    echo"原文------:".$origin_encrypted_text;
    echo '<br>长度:'.strlen($origin_encrypted_text);
    //$encrypted_text_2_plain_text = $sm4->setKey($key)->decryptData($encrypted_text_data);
    $original_decrypted_text = $sm4->setKey($key)->decryptData($origin_encrypted_text);
    echo '<br>';
    echo "原文解密:".$original_decrypted_text ;
    echo '<br>';
    
    //echo "明文:" . $data . "\n";
    //$a = $sm4->encrypt($key, $data);
    //echo "加密结果:" . $a . "\n";
    //$b = $sm4->decrypt($key, $data);
    //var_dump($b);exit;
    //echo "解密结果:" . $b . "\n";
    
    
    //list($t1, $t2) = explode(' ', microtime());
    //$st = (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
    //for ($i = 0; $i< 1000; $i++) {
    //    $sm4 = new SM4();
    //    $a = $sm4->encrypt($key, $data);
    //}
    //list($t1, $t2) = explode(' ', microtime());
    //$et = (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
    //$endtime = $et-$st;
    //
    //echo "time:" . $endtime . "\n";
    

    我这里要说明的是,php分32位和64位2个版本,我在使用上述方法时,对接的接口,64位可用。so,32位和64位加密结果不一致,需要注意版本!

    展开全文
  • php sm2 sm3 sm4 国密算法整理 php版本的国密sm2的签名算法,sm3的hash, sm4的ecb加解密,要求PHP7,打开gmp支持 目前如果服务器配套的使用的是openssl 1.1.1x, 目前到1.1.1k ,sm2,sm3,sm4都可以直接用openssl_xxx...
  • SM2Utils.java中main进行国密SM2私钥公钥生成、加解密。SM3Digest.java中main方法里进行sm3摘要生成。
  • PHP实现国密算法SM4

    2021-03-23 21:08:54
    1.SM4算法实现class SM4{const SM4_CK = [0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269,0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9,0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249,0x50575e65, 0x6c737a...
  • php国密算法M4加解密文件

    千次阅读 2019-11-26 09:58:43
    最近要用到国密算法加密zip文件成enc文件,搜了半天终于搜到一个,特此记录一下;原文地址:https://blog.csdn.net/guanglei_hu/article/details/88020464 class SM4 { const SM4_CK = [ 0x00070e15, 0x1c232a31, 0x...
  • PHP实现国密SM3算法

    2021-09-15 15:53:28
    最近对接一个第三方系统,对方要求接口签名加密使用sm3加密算法,不过php没有原生支持该算法的函数,所以需要... openssl在1.1.1版本中支持了国密算法,但是我看了一下我的环境,内置的openssl是1.0.2k,版本比较老。但是...
  • PHP关于国密SM3加密的处理

    千次阅读 2021-03-23 21:10:14
    这几天对接中国联通物联网IoT Gateway门户API系统,其中用到国密SM3,其提供的token需使用国密SM3对源串进行加密处理,网上搜索也没找到什么函数之类的,只有c和java语言写的,看来要使用这个SM3加密就必须进行扩展...
  • SM2,SM4,SM3,国密算法PHP版.rar

    千次阅读 2021-03-24 11:35:31
    new\WebContent\auth.jsp 11.87 KB 2015/11/2 9:54:04 63 身份认证例子(htm5)\SM2国密算法例子\Php\examples\login.php 11.48 KB 2018/7/23 11:51:18 64 身份认证例子(htm5)\普通例子\ASP\例子二\login.asp 11.45 KB...
  • 1. 国密介绍国密算法是我国自主研发创新的一套数据加密处理系列算法。从SM1-SM4分别实现了对称、非对称、摘要等算法功能。特别适合应用于嵌入式物联网等相关领域,完成身份认证和数据加解密等功能。当然,默认的前提...
  • 代码如下class SM4{const SM4_CK = [0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269,0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9,0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249,0x50575e65, 0x6c737a81, ...
  • PHP实现“国密算法SM4”代码

    千次阅读 2021-03-24 11:36:23
    class SM4{const SM4_CK = [0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269,0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9,0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249,0x50575e65, 0x6c737a81, 0x888f969...
  • php实现国密sm2 sm3 sm4 算法整理

    千次阅读 2020-12-28 09:33:08
    https://github.com/lpilp/phpsm2sm3sm4 sm2 sm3 sm4 算法整理链接 这位大佬已经整理好了~~~
  • 最近在对接民生银行的电子账户接口,按照民生的要求,调用接口需要涉及 SM2 ...1、SM2 国密算法针对接口请求参数的加密加签及响应数据的解密验签操作,民生银行的要求如下:对数据进行 PKCS#7 带原文签名,并将签...
  • 国密3纯php版本:SM3-PHP

    千次阅读 2021-03-22 18:14:50
    国密3加密算法一直都用的php扩展库的方式实现的。扩展库的优点就是效率高,缺点就是对php环境不太友好,每个php版本都要单独编译。 今天偶然发现个纯php版的实现,安装上用了,非常不错 https://sm3.doylee.cn/ .....
  • sm4国密加密算法php实现(真实可用)

    千次阅读 2021-05-15 11:32:13
    sm2国密加密算法php实现使用 可自行验证是否是你需要的sm4加密算法 密钥:asw34a5ses5w81wf 内容:123456 sm4加密后数据为: pPtSTSIVIjizeEY05GphVA== 使用 <?php include 'Sm4Helper.php'; $key = "asw34a5ses...
  • 国密算法SM4-PHP实现

    千次阅读 2019-02-28 11:48:27
    最近需求需要用到国密加密算法,搜索良久都木有PHP实现,故自己根据C代码实现了一个。 &lt;?php class SM4 { const SM4_CK = [ 0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269, 0x70777e85, 0x8c939aa1,...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 352
精华内容 140
关键字:

php 国密