對於我的應用程序,我將大量使用ecdh
,aes
和ecdsa
來確保用戶身份驗證和維護安全線路。將加密類轉換爲異步代碼
crypto module的當前代碼本質上是完全同步的。我已經做了utils的文件夾,如下
'use strict'
// Make async later on for performance
// Add bluebird for better error handling
const crypto = require('crypto');
let cipher = {};
cipher.createCipher = (pw) => {
return crypto.createCipher('aes192', pw);
}
cipher.encryptText = (cipher, plainText, callback) => {
try {
if (!callback && !callback instanceof Function) {
throw new Error("callback must be passed")
}
if (!plainText instanceof String) {
throw new Error("2nd param must be plain text")
}
let encrypted = '';
cipher.on('readable',() => {
var data = cipher.read();
if (data)
encrypted += data.toString('hex');
});
cipher.on('end',() => {
callback(null, encrypted);
});
cipher.write(plainText);
cipher.end();
} catch (e) {
callback(e, null);
}
}
cipher.decryptText = (cipher, cipherText, callback) => {
}
module.exports = cipher;
在我的測試類,我打電話的功能
const cipher = require('../components/cipher.js');
cipher.encryptText(cipher.createCipher(key), paramOne, (err, data) => {
console.log('\n func 1 \n');
console.log(data);
})
console.log('break');
cipher.encryptText(cipher.createCipher('1'), 'paramTwo', (err, data) => {
console.log('\n func 2 \n');
console.log(data);
})
paramOne圍繞10-12行文字,在ASYC功能,下函數應該先執行。但是,情況並非如此。
有沒有什麼方法可以修改我的components/cipher.js
類,以將加密和解密函數轉換爲真正的異步。
多次授權嘗試將需要多個密鑰交換,這是非常昂貴的CPU使用情況。
使用測試,我已經確認,encryptText()
函數只有在它從執行中返回一個值之後纔會被第二次調用,即它將等到callback
完成一次。
需要一些建議/幫助請大家。 TIA