Site

crypt

v4

A classe MUCRM\engine\support\crypt criptografa dados sensíveis que precisam ser lidos depois (tokens, chaves de API). Classe e métodos em lowercase: crypt::encrypt(). Para senhas, use hash.

⚠️Chave interna da Engine
A criptografia usa chave interna da Engine (AES-256-CBC). Se ela mudar, payloads antigos não abrem.

Importação

use MUCRM\engine\support\crypt;

Criptografar e descriptografar

encrypt() serializa arrays e objetos automaticamente. Para strings puras, prefira encrypt_string().

$encrypted = crypt::encrypt('meu-segredo');
$plain = crypt::decrypt($encrypted);
// "meu-segredo"

String pura

$encrypted = crypt::encrypt_string('token-api-abc123');
$plain = crypt::decrypt_string($encrypted);
// "token-api-abc123"

Arrays / estruturas

$payload = crypt::encrypt([
    'customer_id' => 42,
    'role'        => 'admin',
]);

$data = crypt::decrypt($payload);
MétodoDescrição
crypt::encrypt($value)Serializa e criptografa qualquer valor
crypt::decrypt($payload)Descriptografa e desserializa
crypt::encrypt_string($text)Criptografa string sem serialize
crypt::decrypt_string($payload)Descriptografa string pura
crypt::make($value)HMAC one-way (não recupera o original)
crypt::check($value, $hmac)Compara valor com HMAC gerado por make()

Exemplo em handler

<?php

namespace MUCRM\modules\account\handlers;

use MUCRM\engine\support\{crypt, request};
use MUCRM\http\handler;

class settings_handler extends handler
{
    public function store_api_key(request $req)
    {
        $data = $req->check([
            'api_key' => 'required|min:16',
        ]);

        $customer = auth();
        $customer->api_key_encrypted = crypt::encrypt($data['api_key']);
        $customer->save();

        return res()->success('Chave salva com segurança.')->back();
    }

    public function reveal_api_key()
    {
        $customer = auth();

        try {
            $key = crypt::decrypt($customer->api_key_encrypted);
        } catch (\Throwable $e) {
            return res()->error('Não foi possível ler a chave.')->back();
        }

        return $this->view('Account.settings.api_key', compact('key'));
    }
}

crypt vs hash

// hash — senhas (não recupera o original)
hash::make('senha123');
hash::check('senha123', $customer->password);

// crypt — dados que você PRECISA ler de novo
crypt::encrypt($token);
crypt::decrypt($token_criptografado);

// crypt::make / crypt::check — HMAC one-way (não é senha)
$hmac = crypt::make('valor-secreto');
crypt::check('valor-secreto', $hmac);
🚨Não use crypt para senhas
Senha de usuário → hash::make() / hash::check(). O crypt::make() é HMAC one-way, não substitui hash de senha.

Resumo

use MUCRM\engine\support\crypt;

crypt::encrypt($value);          // serializa arrays/objetos
crypt::decrypt($payload);

crypt::encrypt_string($text);    // string pura
crypt::decrypt_string($payload);

crypt::make($value);             // HMAC one-way
crypt::check($value, $hmac);