我有使用AES解密一個緩衝對象,我希望有人有一個想法出了問題,我在做什麼錯?解密MySQL的AES_ENCRYPT在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正確choosen ...
要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 NG。你不能在查詢中使用'AES_DECRYPT'嗎? – robertklep 2013-03-21 11:40:06
@robertklep當然我可以在查詢中使用AES_DECRYPT,但是如果我發送了一個SELECT_語句,它具有從Node.JS到MySQL服務器的AES_DECRYPT,那麼我的加密用戶名和密碼將以明文形式發回,或至少解密:(和我想避免這個... – innc 2013-03-21 12:44:13