Как вставить строки, требующие метода шифрования, используемого в этом примере? - PullRequest
0 голосов
/ 02 декабря 2019

Я работаю с базой данных MySql, для которой мне не доступен код на стороне клиента.

Мне нужно добавить намного больше строк в таблицу, а не вручную через клиента.

CREATE TABLE `__Auth` (
  `doctype` varchar(140) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `fieldname` varchar(140) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `encrypted` int(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`doctype`,`name`,`fieldname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED 

Действительная команда вставки выглядит следующим образом ...

INSERT INTO `_a7a7e96ba1644fd9`.`__Auth` (doctype,name,fieldname,password,encrypted) VALUES 
(
   'Email Account',
   'John Smith',
   'password',
   'gAAAAABd46ytFrw8sNGQf9-kk0q3qc9ozKw1aF5OyFtF31qxLm4WK9iWXC-H-uWRsUCPW_QUFe8dhYu0C3D6Nd36dlTLb1EuYiQkHt6-aJHSv_fZ77w2knA=',
   1
);

У меня есть ключ шифрования. Выглядит это так ... FwCG-MUY37j6Qqqzm_Z-kkXkHwiO1y09tg6QNhZVuXg= ... однако моя проблема в том, что Мне нужно сгенерировать зашифрованную строку пароля в моих операторах вставки!

Я пытался использовать вставки, заменяя поле пароля, например ...

AES_ENCRYPT('qtgkskwqroqjrewq','FwCG-MUY37j6Qqqzm_Z-kkXkHwiO1y09tg6QNhZVuXg=')

... но, потому что вывод выглядит так ', ÈÚ:! ¼ ÷ X © u¯r @ ÷ S¦ã © pv ' Я получаю SQL Error [1366] [22007]: (conn=794) Incorrect string value.

Поскольку зашифрованный пароль очень похож на короткий открытый ключ RSA, который я пробовал ...

SELECT FROM_BASE64('gAAAAABd46ytFrw8sNGQf9-kk0q3qc9ozKw1aF5OyFtF31qxLm4WK9iWXC-H-uWRsUCPW_QUFe8dhYu0C3D6Nd36dlTLb1EuYiQkHt6-aJHSv_fZ77w2knA=');

... но результат будет null.

Вопросы

1) Как я могу построить команду вставки с функциями MySql, использующими такую ​​клавишу, как эта...

'FwCG-MUY37j6Qqqzm_Z-kkXkHwiO1y09tg6QNhZVuXg ='

... чтобы включить этот текст ...

'qtgkskwqroqjq'

1045 * ... в этот текст ... 1047 * gAAAAABd46ytFrw8sNGQf9-kk0q3qc9ozKw1aF5OyFtF31qxLm4WK9iWXC-H-uWRsUCPW_QUFe8dhYu0C3D6Nd36dlTLb1EuYiQkHt6-aJHSv_fZ77w2knA =' 1051 *?

2) Должен ли мой оператор соединения с базой данных и / или оператор INSERT указывать utf8mb4_unicode_ci , пока я пытаюсь использовать AES_ENCRYPT ();

3) Я пытаюсь сделать невозможное ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...