63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
namespace app\util\sm\cmb;
 | 
						|
 | 
						|
use app\util\sm\Exec;
 | 
						|
 | 
						|
class Sm extends Exec
 | 
						|
{
 | 
						|
 | 
						|
    /**
 | 
						|
     * sm4 加密
 | 
						|
     * @param string $key
 | 
						|
     * @param string $plaintext
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public static function sm4Encrypt(string $key, string $plaintext): string
 | 
						|
    {
 | 
						|
        $content = base64_encode($plaintext);
 | 
						|
        $cmd = self::dirPath() . 'sm cmblife encrypt --input="' . $content . '" --sopPublicKey="' . $key . '" 2>&1';
 | 
						|
        return self::exec2($cmd);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * sm4 解密
 | 
						|
     * @param string $key
 | 
						|
     * @param string $plaintext
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public static function sm4decrypt(string $key, string $plaintext): string
 | 
						|
    {
 | 
						|
        $content = base64_encode($plaintext);
 | 
						|
        $cmd = self::dirPath() . 'sm cmblife decrypt --input="' . $content . '" --priKey="' . $key . '" 2>&1';
 | 
						|
        return self::exec2($cmd);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * sm2 签名
 | 
						|
     * @param string $prk
 | 
						|
     * @param string $plaintext
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public static function sign(string $prk, string $plaintext): string
 | 
						|
    {
 | 
						|
        $content = base64_encode($plaintext);
 | 
						|
        $cmd = self::dirPath() . 'sm cmblife sign --input="' . $content . '" --priKey="' . $prk . '" 2>&1';
 | 
						|
        return self::exec2($cmd);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 验证签名
 | 
						|
     * @param string $puk
 | 
						|
     * @param string $signStr
 | 
						|
     * @param string $plaintext
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public static function verify(string $puk, string $signStr, string $plaintext): bool
 | 
						|
    {
 | 
						|
        $content = base64_encode($plaintext);
 | 
						|
        $cmd = self::dirPath() . 'sm cmblife verify --input="' . $content . '" --sopPublicKey="' . $puk . '" --sign="' . $signStr . '" 2>&1';
 | 
						|
        return self::exec2($cmd) == 'ok';
 | 
						|
    }
 | 
						|
} |