#sql #postgresql
#sql #postgresql
Вопрос:
Я протестировал этот скрипт в Postgresql:
select encode(encrypt('123456','F2388451B0954326','aes'),'BASE64');
Но это шифрование AES128. Как я могу использовать шифрование aes-256 в PostgreSQL?
Комментарии:
1. Использование «encrypt» явно не рекомендуется документами. Почему бы вместо этого не использовать pg_sym_encrypt, что упрощает выбор aes256?
Ответ №1:
Вы можете использовать расширение pgcrypto, установить его с помощью:
create extension pgcrypto
теперь, после успешной установки pgcrypto, используйте функцию pgp_sym_encrypt
select encode(pgp_sym_encrypt('123456','F2388451B0954326','compress-algo=1, cipher-algo=aes256'),'BASE64');
обратите внимание, что первый параметр ‘123456’ — это данные, второй параметр — пароль
надеюсь, что это ответ на ваш вопрос
Комментарии:
1. я использовал эту функцию раньше, но результат не тот, что при шифровании aes-256 в коде Java, в то время как я меняю ключ параметра функции на 32 байта, например ‘F2388451B0954326F2388451B0954326’, результат функции совпадает с результатом кода Java, так работает ли функция шифрования как aes-256, когда я использовать 256-битный ключ?
2. Это связано с тем, как работает шифрование aes-256, смотрите Здесь для получения дополнительной информации, но в основном, если зашифрованный текст (результат) может быть расшифрован как в java, так и в posgresql с одним и тем же паролем, это означает, что это действительный зашифрованный текст..