У меня есть проблема с использованием AES расшифровать для объекта буфера и я надеюсь, что кто-то есть идея, что я делаю неправильно ...расшифровывать MySQL в Node.js
MyExample: У меня есть таблица MySQL с AES_ENCRYPT для имени пользователя и пароля ...
CREATE TABLE Accounts
(
id INT(4) NOT NULL AUTO_INCREMENT,
username VARBINARY(128) NOT NULL,
password VARBINARY(128) NOT NULL,
PRIMARY KEY(id)
);
DELIMITER |
CREATE TRIGGER encodeAccounts BEFORE INSERT ON Accounts
FOR EACH ROW BEGIN
SET NEW.username = AES_ENCRYPT(NEW.username, 'password');
SET NEW.password = AES_ENCRYPT(NEW.password, 'password');
END;
Node.js: Я с помощью модуля узла-MySQL, чтобы отправить запрос на мой datase:
SELECT * FROM Accounts;
Такого рода ценностей возвращаются на пароль и имя пользователя:
<Buffer 07 86 95 ee 77 df 86 50 ae 18 4c d5 3e 48 42 75>
Как расшифровать его с Node.js расшифровать метод? Мои попытки не удалось все ... Я надеюсь, что AES-128-ECB правильно выбран ...
Чтобы deciper что-то в Node.js должен выглядеть следующим образом:
var decipher = crypto.createDecipher('AES-128-ECB', 'password');
var dec = decipher.update(rows[i].username); // an example, value look like <Buffer ...
dec += decipher.final('utf8');
console.log('dec: ' + dec);
Спасибо всем помогает :)
Он не похож это будет легко, см. [эту страницу] (http://coding.smashingmagazine.com/2012/05/20/replicating-mysql-aes-encryption-methods-with-php/) о том, как реализовать метод MySQL для расширение ключа и paddi нг. Вы не можете использовать 'AES_DECRYPT' внутри запроса? – robertklep
@robertklep, конечно, я мог бы использовать AES_DECRYPT внутри запроса, но если я отправлю такой оператор SELECT с AES_DECRYPT с Node.JS на сервер MySQL, тогда мое зашифрованное имя пользователя и пароль будут отправлены обратно в виде открытого текста или, по крайней мере, расшифрованы :(и я хотел избежать этого ... – innc