---
title: "Šifrované hodnoty — Attributes for Laravel | Roundly"
description: "Označte definíciu ako šifrovanú — hodnota sa uloží ako šifrový text cez Crypt a pri čítaní sa transparentne dešifruje."
url: https://roundly-consulting.com/sk/open-source/navody/attributes-for-laravel/sifrovane-hodnoty
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Attributes for Laravel](https://roundly-consulting.com/sk/open-source/navody/attributes-for-laravel.md)

# Šifrované hodnoty

Označte definíciu cez encrypted: true a jej hodnota sa pri uložení transparentne zašifruje cez Crypt a pri čítaní dešifruje. Funguje pre každý typ; hodnoty null cez Crypt nikdy neprechádzajú:

```php
Attributes::define(new AttributeDefinitionData('token', AttributeType::String_, encrypted: true));

Attributes::for($product)->set('token', 'secret');
Attributes::for($product)->get('token'); // 'secret' (DB column holds ciphertext)
```

Rovnaký príznak funguje v definíciách v konfigurácii aj v schémach modelov:

```php
// config/attributes.php — or a model's $attributeDefinitions
'definitions' => [
    'api_token'  => ['type' => 'string', 'encrypted' => true],
    'birth_date' => ['type' => 'datetime', 'encrypted' => true],
],
```

## Ako to funguje

- Hodnota sa najprv prevedie na uložený reťazec a až potom zašifruje cez Crypt v Laraveli — typ tak zostane zachovaný.
- Každý riadok nesie príznak is\_encrypted a čítanie dešifruje podľa riadku, nie podľa aktuálnej definície. Zapnutie šifrovania neskôr ovplyvní len hodnoty zapísané potom; staršie riadky sa naďalej čítajú správne.
- Hodnoty sa šifrujú kľúčom aplikácie, preto musí byť APP\_KEY nastavený všade, kde sa atribúty čítajú alebo zapisujú.
- Jedinečnosť funguje ďalej: šifrovaná jedinečná hodnota sa indexuje kľúčovaným slepým indexom odvodeným z APP\_KEY, nikdy otvoreným textom.
- Revízie ukladajú šifrový text, takže auditná stopa nikdy nevyzradí tajomstvá.
- php artisan about vypisuje definície len ako počet, takže názvy šifrovaných atribútov sa v diagnostike neobjavia.

## Obmedzenia

Šifrový text je nedeterministický, preto šifrované hodnoty query scopy nedokážu porovnať, ohraničiť ani zoradiť. Scopy na prítomnosť, napríklad whereHasAttribute(), fungujú ďalej a rovnako aj unique:

```php
use RoundlyConsulting\Attributes\DataTransferObjects\AttributeDefinitionData;
use RoundlyConsulting\Attributes\Enums\AttributeType;
use RoundlyConsulting\Attributes\Enums\UniqueScope;
use RoundlyConsulting\Attributes\Facades\Attributes;

Attributes::define(new AttributeDefinitionData(
    'national_id',
    AttributeType::String_,
    unique: UniqueScope::Global_,
    encrypted: true,
));

Attributes::for($a)->set('national_id', 'AB123');
Attributes::for($b)->set('national_id', 'AB123'); // throws DuplicateAttributeValueException
```

Rotácia APP\_KEY zmení kľúč slepého indexu — šifrované jedinečné hodnoty potom uložte znova.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/attributes-for-laravel.md)
