本文整理汇总了PHP中Crypt::mkEncrypt方法的典型用法代码示例。如果您正苦于以下问题:PHP Crypt::mkEncrypt方法的具体用法?PHP Crypt::mkEncrypt怎么用?PHP Crypt::mkEncrypt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Crypt
的用法示例。
在下文中一共展示了Crypt::mkEncrypt方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: encryptData
/**
* Encriptar datos. Devuelve un array con los datos encriptados y el IV.
*
* @param mixed $data string Los datos a encriptar
* @param string $pwd La clave de encriptación
* @return array
* @throws SPException
*/
public static function encryptData($data, $pwd = null)
{
if (empty($data)) {
return array('data' => '', 'iv' => '');
}
// Comprobar el módulo de encriptación
if (!Crypt::checkCryptModule()) {
throw new SPException(SPException::SP_CRITICAL, _('Error interno'), _('No se puede usar el módulo de encriptación'));
}
// Encriptar datos
$encData['data'] = Crypt::mkEncrypt($data, $pwd);
if (!empty($data) && ($encData['data'] === false || is_null($encData['data']))) {
throw new SPException(SPException::SP_CRITICAL, _('Error interno'), _('Error al generar datos cifrados'));
}
$encData['iv'] = Crypt::$strInitialVector;
return $encData;
}
示例2: appendNode
/**
* Añadir un nuevo nodo al árbol raíz
*
* @param \DOMElement $node El nodo a añadir
* @throws SPException
*/
private function appendNode(\DOMElement $node)
{
try {
// Si se utiliza clave de encriptación los datos se encriptan en un nuevo nodo:
// Encrypted -> Data
if ($this->_encrypted === true) {
// Obtener el nodo en formato XML
$nodeXML = $this->_xml->saveXML($node);
// Crear los datos encriptados con la información del nodo
$encrypted = Crypt::mkEncrypt($nodeXML, $this->_exportPass);
$encryptedIV = Crypt::$strInitialVector;
// Buscar si existe ya un nodo para el conjunto de datos encriptados
$encryptedNode = $this->_root->getElementsByTagName('Encrypted')->item(0);
if (!$encryptedNode instanceof \DOMElement) {
$encryptedNode = $this->_xml->createElement('Encrypted');
}
// Crear el nodo hijo con los datos encriptados
$encryptedData = $this->_xml->createElement('Data', base64_encode($encrypted));
$encryptedDataIV = $this->_xml->createAttribute('iv');
$encryptedDataIV->value = base64_encode($encryptedIV);
// Añadir nodos de datos
$encryptedData->appendChild($encryptedDataIV);
$encryptedNode->appendChild($encryptedData);
// Añadir el nodo encriptado
$this->_root->appendChild($encryptedNode);
} else {
$this->_root->appendChild($node);
}
} catch (\DOMException $e) {
throw new SPException(SPException::SP_WARNING, $e->getMessage(), __FUNCTION__);
}
}
示例3: updateAccountsMasterPass
/**
* Actualiza las claves de todas las cuentas con la nueva clave maestra.
*
* @param string $currentMasterPass con la clave maestra actual
* @param string $newMasterPass con la nueva clave maestra
* @param string $newHash con el nuevo hash de la clave maestra
* @return bool
*/
public function updateAccountsMasterPass($currentMasterPass, $newMasterPass, $newHash = null)
{
$accountsOk = array();
$userId = Session::getUserId();
$demoEnabled = Util::demoIsEnabled();
$errorCount = 0;
$Log = new Log(_('Actualizar Clave Maestra'));
$Log->addDescription(_('Inicio'));
$Log->writeLog();
$Log->resetDescription();
if (!Crypt::checkCryptModule()) {
$Log->addDescription(_('Error en el módulo de encriptación'));
$Log->writeLog();
return false;
}
$accountsPass = $this->getAccountsPassData();
if (!$accountsPass) {
$Log->addDescription(_('Error al obtener las claves de las cuentas'));
$Log->writeLog();
return false;
}
foreach ($accountsPass as $account) {
$this->setAccountId($account->account_id);
$this->setAccountUserEditId($userId);
// No realizar cambios si está en modo demo
if ($demoEnabled) {
$accountsOk[] = $this->getAccountId();
continue;
}
if (strlen($account->account_pass) === 0) {
$Log->addDescription(_('Clave de cuenta vacía') . ' (' . $account->account_id . ') ' . $account->account_name);
continue;
}
if (strlen($account->account_IV) < 32) {
$Log->addDescription(_('IV de encriptación incorrecto') . ' (' . $account->account_id . ') ' . $account->account_name);
}
$decryptedPass = Crypt::getDecrypt($account->account_pass, $account->account_IV);
$this->setAccountPass(Crypt::mkEncrypt($decryptedPass, $newMasterPass));
$this->setAccountIV(Crypt::$strInitialVector);
if ($this->getAccountPass() === false) {
$errorCount++;
$Log->addDescription(_('No es posible desencriptar la clave de la cuenta') . ' (' . $account->account_id . ') ' . $account->account_name);
continue;
}
if (!$this->updateAccountPass(true)) {
$errorCount++;
$Log->addDescription(_('Fallo al actualizar la clave de la cuenta') . ' (' . $this->getAccountId() . ') ' . $account->acchistory_name);
continue;
}
$accountsOk[] = $this->getAccountId();
}
// Vaciar el array de mensajes de log
if (count($Log->getDescription()) > 0) {
$Log->writeLog();
$Log->resetDescription();
}
if ($accountsOk) {
$Log->addDescription(_('Cuentas actualizadas') . ': ' . implode(',', $accountsOk));
$Log->writeLog();
$Log->resetDescription();
}
$Log->addDescription(_('Fin'));
$Log->writeLog();
Email::sendEmail($Log);
return true;
}