> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL 用 vsql_crypto 拡張機能

> vsql_crypto 拡張機能は、pgcrypto の関数セットを MySQL にもたらします: ハッシュ、HMAC 署名、AES 暗号化、パスワードハッシュ、および安全な乱数データです。

`vsql_crypto` は、OpenSSL 上に構築された `pgcrypto` 互換の関数セットを MySQL にもたらします。4 つの仕事をカバーします。値のハッシュ、ペイロードの署名、カラムの暗号化、および後で検証できるパスワードの保存です。

| | |
| - | - |
| **メンテナー** | VillageSQL |
| **ソースと完全なドキュメント** | [villagesql/vsql-crypto](https://github.com/villagesql/vsql-crypto) |
| **ライセンス** | GPL-2.0 |

## インストール

インストールスクリプト、Docker イメージ、またはリリース tarball で VillageSQL をインストールした場合、`vsql_crypto.veb` はすでにサーバーの `lib/veb/` ディレクトリにあります。1 つのステートメントでサーバーにインストールします。

```sql theme={null}
INSTALL EXTENSION vsql_crypto;
```

インストールされたことを確認します。

```sql theme={null}
SELECT EXTENSION_NAME
FROM INFORMATION_SCHEMA.EXTENSIONS
WHERE EXTENSION_NAME = 'vsql_crypto';
```

```
+----------------+
| EXTENSION_NAME |
+----------------+
| vsql_crypto    |
+----------------+
```

自分でビルドするには、[リポジトリ](https://github.com/villagesql/vsql-crypto)のビルド手順に従ってください。

## 追加される機能

| 関数 | 戻り値 | 説明 |
| - | - | - |
| `digest(data, algorithm)` | binary | `md5`、`sha1`、`sha224`、`sha256`、`sha384`、または `sha512` でデータをハッシュする |
| `hmac(data, key, algorithm)` | binary | 鍵付きハッシュでデータに署名する |
| `encrypt(data, key, type)` | binary | AES で暗号化する |
| `decrypt(data, key, type)` | binary | 同じ鍵で `encrypt` を元に戻す |
| `crypt(password, salt)` | text | パスワードを、自身のパラメーターを含む文字列にハッシュする |
| `gen_salt(type, iterations)` | text | `crypt` のためのソルトを生成する。`pbkdf2-sha256` と `pbkdf2-sha512` のみ |
| `gen_random_bytes(n)` | binary | 暗号学的に安全なランダムバイト |
| `gen_random_uuid()` | text | ランダムなバージョン 4 の UUID をテキストで返す |
| `crypto_version()` | text | 拡張機能がリンクされている OpenSSL のバージョン |

binary と記された関数は生のバイトを返すため、読むには `HEX()` で包んでください。残りはテキストを返します。

## 例

ペイロードに署名します。

```sql theme={null}
SET @secret = 'shared-key';
SELECT HEX(hmac('{"order":4711}', @secret, 'sha256')) AS signature;
```

```
+------------------------------------------------------------------+
| signature                                                        |
+------------------------------------------------------------------+
| 7261870227EF8090041AB514536550671974770FCE19416ABB634C55389C3141 |
+------------------------------------------------------------------+
```

パスワードを保存します。結果にはアルゴリズム、反復回数、およびソルトが含まれているため、検証のために他に保存しておくものはありません。

```sql theme={null}
SELECT crypt('correct horse battery', gen_salt('pbkdf2-sha256', 100000)) AS hash;
```

```
+------------------------------------------------------------------------------------------+
| hash                                                                                     |
+------------------------------------------------------------------------------------------+
| $pbkdf2-sha256$100000$N6MXcYhD7SS4DS9sVhaQag$rv6zFwkwfo4N8+lgEpU5/LR4mOLtio04b6iKCSRlF5E |
+------------------------------------------------------------------------------------------+
```

ソルトはランダムなので、ハッシュは呼び出しのたびに異なります。

> [!NOTE]
>
> `gen_salt` がサポートするのは `pbkdf2-sha256` と `pbkdf2-sha512` だけです。`bf`、`md5`、または `des` を要求すると NULL が返り、NULL のソルトを渡した `crypt` も NULL を返すため、`pgcrypto` が書いた bcrypt ハッシュをここで検証することはできません。

## 関連項目

* [MySQL でのデータのハッシュ](https://villagesql.com/docs/en/guides/hashing-data.md) — どのアルゴリズムを使い、何を保存するか
* [HMAC によるペイロードの署名](https://villagesql.com/docs/en/guides/hmac-mysql.md) — Webhook の署名とトークンの検証
* [カラムの暗号化](https://villagesql.com/docs/en/guides/encrypting-columns.md) — キーの取り扱いと、暗号化が守らないもの
* [拡張機能のインストール](https://villagesql.com/docs/ja/extensions/install.md) — `INSTALL EXTENSION` の仕組みと、サーバーがバンドルを探す場所
* [利用可能な拡張機能](https://villagesql.com/docs/ja/extensions/catalog) — 完全なカタログ
* [villagesql/vsql-crypto](https://github.com/villagesql/vsql-crypto) — ソース、ビルド手順、および既知の制限事項


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.