> ## 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에
가져옵니다. 네 가지 작업을 다룹니다: 값 해싱, 페이로드 서명, 열 암호화, 나중에
검증할 수 있는 비밀번호 저장입니다.

| | |
| - | - |
| **관리자** | VillageSQL |
| **소스 및 전체 문서** | [villagesql/vsql-crypto](https://github.com/villagesql/vsql-crypto) |
| **라이선스** | GPL-2.0 |

## 설치

설치 스크립트, Docker 이미지 또는 릴리스 tarball로 VillageSQL을 설치했다면
`vsql_crypto.veb`는 이미 서버의 `lib/veb/` 디렉터리에 있습니다. 문 하나로
서버에 설치하세요:

```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) — 웹훅 서명과 토큰 검증
* [열 암호화하기](https://villagesql.com/docs/en/guides/encrypting-columns.md) — 키 처리와 암호화가 보호하지 않는 것
* [확장 기능 설치](https://villagesql.com/docs/ko/extensions/install.md) — `INSTALL EXTENSION`의 동작 방식과 서버가 번들을 찾는 위치
* [사용 가능한 확장 기능](https://villagesql.com/docs/ko/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.