Postgres에 대한 pgcrypto의 pgkey_encrypt에 해당하는 MariaDB가 있습니까?
저는 Postgres 13 데이터베이스를 MariaDB로 마이그레이션하는 임무를 맡았습니다.기존 Postgres 데이터베이스는 삽입할 때 다음을 사용하여 특정 데이터 값을 암호화합니다.
편집: pgkey_decrypt가 pgp_sym_encrypt의 별칭인 것 같습니다.
insert into a_table (
normal_value,
secret_value
) values (
'normal',
pgp_sym_encrypt(0.123::text, 'secret_key')
)
그런 다음 다음으로 암호를 해독합니다.
select
normal_value,
cast(pgp_sym_decrypt(secret_value, 'secret_key') as double precision)
from a_table
MariaDB에도 이런 게 있나요?기존 데이터를 마이그레이션할 때의 옵션은 무엇입니까?
옵션 1: AES Encrypt/DECrypt로 마이그레이션
postgres를 사용하여 열의 값을 AES_ENCREPT/DECrypt 지원 값으로 변경하고 다음을 마이그레이션합니다.
alter table a_table add secret_sym bytea;
update a_table set secret_sym = encrypt(cast(pgp_sym_decrypt(secret_value, 'secret_key') as bytea), 'secret_key'::bytea, 'aes-ecb/pad:pkcs'::text);
select cast(convert_from(decrypt(secret_sym, 'secret_key'::bytea, 'aes-ecb/pad:pkcs'::text), 'utf-8') as double precision) as decrypted_value from a_table
참조: postgres 피들
이제 secret_sym을 해독할 수 있는 MariaDB 함수 AES_DECrypt/ENCRIPT를 사용합니다.
select normal_value, aes_decrypt(secret_value, 'secret_key') from a_table
참조: mariadb fiddle
ref: 조만간 비-ecb 기반 AES 함수에 주목하기를 바랍니다.
옵션 2: PGP UDF 생성
서버에 기존 PGP 함수가 없는 것으로 보이며 UDF 함수 모음에 이 함수가 포함되어 있지 않은 것 같습니다.
그러나 Rust UDF 상자를 사용하여 자신만의 UDF 기능을 만드는 것은 매우 쉽습니다.
PGP 크레이트가 Postgresql과 같은 대칭 PGP를 지원하는 것으로 나타남
Rust UDF에 대한 기부 요청은 당신의 작품을 이용할 수 있도록 하는 좋은 장소가 될 것입니다.귀하의 능력/시간 가용성을 초과하는 경우에는 요청하고 구현 비용을 지불할 수 있습니다.
언급URL : https://stackoverflow.com/questions/76016602/is-there-a-mariadb-equivalent-of-pgkey-encrypt-from-pgcrypto-for-postgres
'sourcecode' 카테고리의 다른 글
MongoDB에서 인덱스로 정렬하는 방법은 무엇입니까? (0) | 2023.06.23 |
---|---|
git 얕은 클론(clone --depth)으로 원격 분기 누락 (0) | 2023.06.23 |
GitHub: 권한이 거부되었습니다(공개 키).치명적: 원격 끝이 예기치 않게 끊어졌습니다. (0) | 2023.06.23 |
'ngForOf'는 'tr'의 알려진 속성이 아니므로 바인딩할 수 없습니다(최종 릴리스). (0) | 2023.06.23 |
Python에서 환경 변수 읽기 및 쓰기? (0) | 2023.06.23 |