Prpcrypt::encrypt PHP Method

encrypt() public method

对明文进行加密
public encrypt ( string $text, $appid ) : string
$text string 需要加密的明文
return string 加密后的密文
    public function encrypt($text, $appid)
    {
        try {
            //获得16位随机字符串,填充到明文之前
            $random = $this->getRandomStr();
            //"aaaabbbbccccdddd";
            $text = $random . pack("N", strlen($text)) . $text . $appid;
            // 网络字节序
            $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
            $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
            $iv = substr($this->key, 0, 16);
            //使用自定义的填充方式对明文进行补位填充
            $pkc_encoder = new PKCS7Encoder();
            $text = $pkc_encoder->encode($text);
            mcrypt_generic_init($module, $this->key, $iv);
            //加密
            $encrypted = mcrypt_generic($module, $text);
            mcrypt_generic_deinit($module);
            mcrypt_module_close($module);
            //			print(base64_encode($encrypted));
            //使用BASE64对加密后的字符串进行编码
            return array(ErrorCode::$OK, base64_encode($encrypted));
        } catch (Exception $e) {
            //print $e;
            return array(ErrorCode::$EncryptAESError, null);
        }
    }

Usage Example

Example #1
0
 /**
  * 将公众平台回复用户的消息加密打包.
  * <ol>
  *    <li>对要发送的消息进行AES-CBC加密</li>
  *    <li>生成安全签名</li>
  *    <li>将消息密文和安全签名打包成xml格式</li>
  * </ol>
  *
  * @param $replyMsg string 公众平台待回复用户的消息,xml格式的字符串
  * @param $timeStamp string 时间戳,可以自己生成,也可以用URL参数的timestamp
  * @param $nonce string 随机串,可以自己生成,也可以用URL参数的nonce
  * @param &$encryptMsg string 加密后的可以直接回复用户的密文,包括msg_signature, timestamp, nonce, encrypt的xml格式的字符串,
  *                      当return返回0时有效
  *
  * @return int 成功0,失败返回对应的错误码
  */
 public function encryptMsg($replyMsg, $timeStamp, $nonce, &$encryptMsg)
 {
     $pc = new Prpcrypt($this->encodingAesKey);
     //加密
     $array = $pc->encrypt($replyMsg, $this->appId);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     if ($timeStamp == null) {
         $timeStamp = time();
     }
     $encrypt = $array[1];
     //生成安全签名
     $sha1 = new SHA1();
     $array = $sha1->getSHA1($this->token, $timeStamp, $nonce, $encrypt);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     $signature = $array[1];
     //生成发送的xml
     $xmlparse = new XMLParse();
     $encryptMsg = $xmlparse->generate($encrypt, $signature, $timeStamp, $nonce);
     return ErrorCode::$OK;
 }
All Usage Examples Of Prpcrypt::encrypt