sourcecode

Postgres에 대한 pgcrypto의 pgkey_encrypt에 해당하는 MariaDB가 있습니까?

copyscript 2023. 6. 23. 22:21
반응형

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

반응형