From bfc6192f318f73aed91be0823eabe248f92d2267 Mon Sep 17 00:00:00 2001 From: zhubin79 <18784715772@163.com> Date: Fri, 2 Aug 2024 10:16:35 +0800 Subject: [PATCH] =?UTF-8?q?M=E5=85=BC=E5=AE=B9=E6=80=A7=20gsql=20=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E8=BD=AC=E4=B9=89=E5=AD=97=E7=AC=A6=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bin/psql/command.cpp | 2 + src/bin/psql/common.cpp | 27 +++ src/bin/psql/common.h | 1 + src/bin/psql/mainloop.cpp | 8 +- src/bin/psql/mbprint.cpp | 9 + src/bin/psql/settings.h | 3 + src/bin/psql/startup.cpp | 2 + src/include/postgres_fe.h | 9 + src/test/regress/expected/encrypt_decrypt.out | 186 +++++++++--------- 9 files changed, 147 insertions(+), 100 deletions(-) diff --git a/src/bin/psql/command.cpp b/src/bin/psql/command.cpp index 62ca2b60b..c3bfd0e29 100644 --- a/src/bin/psql/command.cpp +++ b/src/bin/psql/command.cpp @@ -1628,6 +1628,8 @@ static bool do_connect(char* dbname, char* user, char* host, char* port) SyncVariables(); connection_warnings(false); /* Must be after SyncVariables */ + pset.dbType = GetDatabaseType(); + /* Tell the user about the new connection */ if (!pset.quiet) { if (param_is_newly_set(PQhost(o_conn), PQhost(pset.db)) || diff --git a/src/bin/psql/common.cpp b/src/bin/psql/common.cpp index 5d87b31fa..a9c98edb5 100644 --- a/src/bin/psql/common.cpp +++ b/src/bin/psql/common.cpp @@ -2732,4 +2732,31 @@ bool CheckSpecificExtension(PGconn *connection, char *extension) PQclear(res); return isHasExtension; +} + +/* Get Database Type */ +DBFormatType GetDatabaseType() +{ + char* compatibilityStr; + /* Default set A_FORMAT */ + DBFormatType dbType = A_FORMAT; + + PGresult* res = PQexec(pset.db, "show sql_compatibility"); + if (res != NULL && PQresultStatus(res) == PGRES_TUPLES_OK) { + compatibilityStr = PQgetvalue(res, 0, 0); + if (strcmp(compatibilityStr, "A") == 0) { + dbType = A_FORMAT; + } else if (strcmp(compatibilityStr, "B") == 0) { + dbType = B_FORMAT; + } else if (strcmp(compatibilityStr, "C") == 0) { + dbType = C_FORMAT; + } else if (strcmp(compatibilityStr, "PG") == 0) { + dbType = PG_FORMAT; + } + } + + PQclear(res); + res = NULL; + + return dbType; } \ No newline at end of file diff --git a/src/bin/psql/common.h b/src/bin/psql/common.h index 3d6d1efb6..013d07b04 100644 --- a/src/bin/psql/common.h +++ b/src/bin/psql/common.h @@ -99,6 +99,7 @@ extern void ResetQueryRetryController(); extern bool QueryRetryController(const char* query); extern bool SendQuery(const char* query, bool is_print = true, bool print_error = true); extern bool MakeCopyWorker(const char* query, int nclients); +extern DBFormatType GetDatabaseType(); extern bool is_superuser(void); extern bool standard_strings(void); diff --git a/src/bin/psql/mainloop.cpp b/src/bin/psql/mainloop.cpp index 96007e82f..207d9e9a5 100644 --- a/src/bin/psql/mainloop.cpp +++ b/src/bin/psql/mainloop.cpp @@ -368,13 +368,7 @@ int MainLoop(FILE* source, char* querystring) exit(EXIT_FAILURE); } - /* Initialize current database compatibility */ - PGresult* res = PQexec(pset.db, "show sql_compatibility"); - if (res != NULL && PQresultStatus(res) == PGRES_TUPLES_OK) { - is_b_format = strcmp (PQgetvalue(res, 0, 0), "B") == 0; - } - PQclear(res); - res = NULL; + is_b_format = IS_CMPT(pset.dbType, B_FORMAT); /* main loop to get queries and execute them */ while (successResult == EXIT_SUCCESS) { diff --git a/src/bin/psql/mbprint.cpp b/src/bin/psql/mbprint.cpp index d361ee433..82707585a 100644 --- a/src/bin/psql/mbprint.cpp +++ b/src/bin/psql/mbprint.cpp @@ -221,6 +221,10 @@ void pg_wcssize( linewidth++; format_size++; } while (linewidth % 8 != 0); + } else if (IS_CMPT(pset.dbType, B_FORMAT) && *pwcs == '\b') { /* backspace character */ + linewidth += w; + } else if (IS_CMPT(pset.dbType, B_FORMAT) && *pwcs == '\032') { /* ascii 26(control + Z)*/ + /* Do nothing for this */ } else if (w < 0) { /* Other control char */ linewidth += 4; format_size += 4; @@ -298,6 +302,11 @@ void pg_wcsformat(const unsigned char* pwcs, size_t len, int encoding, struct li *ptr++ = ' '; linewidth++; } while (linewidth % 8 != 0); + } else if (IS_CMPT(pset.dbType, B_FORMAT) && *pwcs == '\b') { /* backspace character */ + *(--ptr) = *pwcs; + linewidth += w; + } else if (IS_CMPT(pset.dbType, B_FORMAT) && *pwcs == '\032') { /* ascii 26(control + Z)*/ + /* Do nothing for this */ } else if (w < 0) { /* Other control char */ rc = sprintf_s((char*)ptr, max_bytes - linewidth + 1, "\\x%02X", *pwcs); securec_check_ss_c(rc, "\0", "\0"); diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h index fffd3d12f..e4a34e665 100644 --- a/src/bin/psql/settings.h +++ b/src/bin/psql/settings.h @@ -12,6 +12,7 @@ #include "variables.h" #include "print.h" +#include "postgres_fe.h" /* Database Security: Data importing/dumping support AES128. */ #include "utils/aes.h" @@ -86,6 +87,8 @@ typedef struct _psqlSettings { VariableSpace vars; /* "shell variable" repository */ + DBFormatType dbType; + /* * The remaining fields are set by assign hooks associated with entries in * "vars". They should not be set directly except by those hook diff --git a/src/bin/psql/startup.cpp b/src/bin/psql/startup.cpp index 03c5f5f14..64fb84c58 100644 --- a/src/bin/psql/startup.cpp +++ b/src/bin/psql/startup.cpp @@ -701,6 +701,8 @@ int main(int argc, char* argv[]) SyncVariables(); + pset.dbType = GetDatabaseType(); + if (options.action == ACT_LIST_DB && !isparseonly) { int success; diff --git a/src/include/postgres_fe.h b/src/include/postgres_fe.h index fed05e7a5..024074631 100644 --- a/src/include/postgres_fe.h +++ b/src/include/postgres_fe.h @@ -56,6 +56,15 @@ typedef enum { TD_FORMAT, M_FORMAT } DatabaseType; + +typedef enum { + A_FORMAT = 0x0001, + B_FORMAT = 0x0002, + C_FORMAT = 0x0004, + PG_FORMAT = 0x0008 +} DBFormatType; +#define IS_CMPT(cmpt, flag) (((uint32)(cmpt) & (uint32)(flag)) != 0) + #endif // HAVE_DATABASE_TYPE #endif /* POSTGRES_FE_H */ diff --git a/src/test/regress/expected/encrypt_decrypt.out b/src/test/regress/expected/encrypt_decrypt.out index 8038ffbdc..275ee61d6 100644 --- a/src/test/regress/expected/encrypt_decrypt.out +++ b/src/test/regress/expected/encrypt_decrypt.out @@ -137,10 +137,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -161,15 +161,15 @@ select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', 'abcd'); ERROR: the size of init_vector must be greater than or equal to 16. CONTEXT: referenced column: aes_encrypt select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef'); - aes_encrypt -------------------------- - 8\x01MP\x1Fe3\x0F \x08` + aes_encrypt +-------------------- + 8\x01MP\x1Fe3\x0F` (1 row) select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456'); - aes_encrypt -------------------------- - 8\x01MP\x1Fe3\x0F \x08` + aes_encrypt +-------------------- + 8\x01MP\x1Fe3\x0F` (1 row) select lengthb(aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456')), lengthb('HuaweiGauss_234'); @@ -277,10 +277,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -417,10 +417,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -557,10 +557,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -611,9 +611,9 @@ select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef') = (1 row) select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890dgjahdjk'); - aes_encrypt ---------------------------- - $+&+\x074uC\x08\x1CK\x1E + aes_encrypt +---------------------- + $+&+\x074u\x1CK\x1E (1 row) select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef') = aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890dgjahdjk'); @@ -697,10 +697,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -837,10 +837,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -977,10 +977,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -1117,10 +1117,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -1257,10 +1257,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -1281,15 +1281,15 @@ select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', 'abcd'); ERROR: the size of init_vector must be greater than or equal to 16. CONTEXT: referenced column: aes_encrypt select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef'); - aes_encrypt ------------------------ - hJ#\x0E\x1A\x01跟uGfG + aes_encrypt +------------------- + hJ#\x0E\x01跟uGfG (1 row) select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456'); - aes_encrypt ------------------------ - hJ#\x0E\x1A\x01跟uGfG + aes_encrypt +------------------- + hJ#\x0E\x01跟uGfG (1 row) select lengthb(aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456')), lengthb('HuaweiGauss_234'); @@ -1397,10 +1397,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -1537,10 +1537,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -1561,15 +1561,15 @@ select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', 'abcd'); ERROR: the size of init_vector must be greater than or equal to 16. CONTEXT: referenced column: aes_encrypt select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef'); - aes_encrypt -------------------- - p\x1A\x05pg\x17R® + aes_encrypt +--------------- + p\x05pg\x17R® (1 row) select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456'); - aes_encrypt -------------------- - p\x1A\x05pg\x17R® + aes_encrypt +--------------- + p\x05pg\x17R® (1 row) select lengthb(aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456')), lengthb('HuaweiGauss_234'); @@ -1677,10 +1677,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -1701,15 +1701,15 @@ select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', 'abcd'); ERROR: the size of init_vector must be greater than or equal to 16. CONTEXT: referenced column: aes_encrypt select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef'); - aes_encrypt ------------------------ - hJ#\x0E\x1A\x01跟uGfG + aes_encrypt +------------------- + hJ#\x0E\x01跟uGfG (1 row) select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456'); - aes_encrypt ------------------------ - hJ#\x0E\x1A\x01跟uGfG + aes_encrypt +------------------- + hJ#\x0E\x01跟uGfG (1 row) select lengthb(aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456')), lengthb('HuaweiGauss_234'); @@ -1817,10 +1817,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -1957,10 +1957,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef'); @@ -1981,15 +1981,15 @@ select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', 'abcd'); ERROR: the size of init_vector must be greater than or equal to 16. CONTEXT: referenced column: aes_encrypt select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef'); - aes_encrypt -------------------- - p\x1A\x05pg\x17R® + aes_encrypt +--------------- + p\x05pg\x17R® (1 row) select aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456'); - aes_encrypt -------------------- - p\x1A\x05pg\x17R® + aes_encrypt +--------------- + p\x05pg\x17R® (1 row) select lengthb(aes_encrypt('HuaweiGauss_234', 'cdjsfj3713vdVHV1', '1234567890abcdef123456')), lengthb('HuaweiGauss_234'); @@ -2097,10 +2097,10 @@ select aes_decrypt(aes_encrypt('大家好','cdjsfj3713vdVHV1', '1234567890abcdef (1 row) select aes_decrypt(aes_encrypt(E'd\nsa\tdj\bsaf\Z\\dssa\ca\rs','dajd123FGBJG', '1234567890abcdef'),'dajd123FGBJG', '1234567890abcdef'); - aes_decrypt ------------------------------- - d + - sa dj\x08safZ\dssaca\rs + aes_decrypt +------------------------- + d + + sa dsafZ\dssaca\rs (1 row) select aes_decrypt(aes_encrypt('~·!@#¥%……&*()-=——+{}【】、|:‘’,。《》、?','12345dvghadCVBUJNF', '1234567890abcdef'),'12345dvghadCVBUJNF', '1234567890abcdef');