Encryption and decryption method for nodejs to realize nail ISV access
- 2021-07-10 18:54:22
- OfStack
This is the development of Worktile nail version of the encounter at that time felt more difficult place, now write down the method for everyone to learn to communicate
Decryption method
exports.decryptMsg = function (text) {
var aes_msg_buffer = new Buffer(text, 'base64');
var key = new Buffer(aes_key + "=", 'base64');
var iv = key.slice(0, 16);
var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
var dec = decipher.write(aes_msg_buffer);
dec = decipher.read();
var msg_leng_buffer = dec.slice(16, 20);
var msg_length = msg_leng_buffer.readInt32BE();
var rand_buffer = dec.slice(20, 20 + msg_length);
var msg = rand_buffer.toString("utf-8");
var result = JSON.parse(msg);
return result;
};
Encryption method
exports.encrypt_text = function (text, aes_key, suiteKey) {
var key = new Buffer(aes_key + "=", 'base64');
var iv = key.slice(0, 16);
var random_buffer = new Buffer(exports.getRandomStr(16), 'utf-8');
var buffer = new Buffer(text, 'utf-8');
var length_buffer = new Buffer(4);
length_buffer.writeUInt32BE(buffer.length, 0);
var corpidBytes = new Buffer(suiteKey, 'utf-8');
var newBuffer = Buffer.concat([random_buffer, length_buffer, buffer, corpidBytes]);
var cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
//cipher.write(newBuffer);
//var dec = cipher.read();
var cipheredMsg = Buffer.concat([cipher.update(/*encoded*/newBuffer), cipher.final()]);
return cipheredMsg.toString('base64');
};
Signature method
var arr =[token, timestamp, nonce, res_encrypt] //token Is configured with a nail kit token , timestamp Time stamps, nonce Random string, res_encrypt It is the result of the above encryption
exports.signature_arr = function (arr) {
arr.sort();
var str = "";
for (var i = 0; i < arr.length; i++) {
str += arr[i];
}
var sha1 = crypto.createHash('sha1');
sha1.update(str);
var msg_signature = sha1.digest('hex');
return msg_signature;
};