本文目錄一覽:
- 1、求教nodejs怎麼對密碼進行加鹽的hash加密
- 2、nodejs裡面怎麼實現HMAC-SHA1
- 3、nodejs怎樣獲取一個上傳文件的MD5碼
- 4、關於nodejs 怎麼實現 crypto des加密
- 5、nodejs怎麼打包加密
求教nodejs怎麼對密碼進行加鹽的hash加密
以前java項目最近打算用node.js重寫,但是加密這裡實在沒搞定。java中加密是:1024次加鹽sha-1加密,
一個例子:salt:47998d63768aa877,密文:bef36ba826b045a7c5e536a2f7131a6c232eee36,明文:yunstudio2013
下面是java代碼:
private static byte[] digest(byte[] input, String algorithm, byte[] salt, int iterations) {
try {
MessageDigest digest = MessageDigest.getInstance(algorithm);
if (salt != null) {
digest.update(salt);
}
byte[] result = digest.digest(input);
for (int i = 1; i iterations; i++) {
digest.reset();
result = digest.digest(result);
}
return result;
} catch (GeneralSecurityException e) {
throw Exceptions.unchecked(e);
}
}
我在js裡面是這麼乾的,但是結果一直不對,代碼如下:
//bef36ba826b045a7c5e536a2f7131a6c232eee36
var hash = crypto.createHmac(“sha1”, 「47998d63768aa877」).update(「yunstudio2013」).digest(「hex」);
for (var i = 1; i 1024; i++) {
hash = crypto.createHmac(“sha1”, 「47998d63768aa877」).update(hash).digest(「hex」);
console.log(hash);
}
nodejs裡面怎麼實現HMAC-SHA1
1)crypto模塊
crypto.createHmac(‘sha1’, app_secret).update(‘待加密字串’).digest().toString(‘base64’); //base64
crypto.createHmac(‘sha1’, app_secret).update(‘待加密字串’).digest(‘hex’); //16進位
但該模塊針對部分數據加密的結果,與其他語言加密的結果會不一致,因此採用第二種方式
2)crypto-js
var CryptoJS = require(‘crypto-js’);
var str = ‘orderId=21140600050549799429orderStatus=TRADE_SUCCESSpayTime=2014-07-22 11:43:31’;
var key = ‘REzySUKRCPfyfV/jfgwTA==’;
var sign = CryptoJS.HmacSHA1(str, key).toString();
console.log(sign);
nodejs怎樣獲取一個上傳文件的MD5碼
MD5中的MD代表Message Digest,就是信息摘要的意思,不過這個信息摘要不是信息內容的縮寫,而是根據公開的MD5演算法對原信息進行數學變換後得到的一個128位(bit)的特徵碼。
1、D5就是求字元串的md5,文件就是一個字元串;
2、前台目前就別考慮讀文件內容了(大部分瀏覽器不行) 都讓後台做;
可以直接看nodeclub源代碼,如下:
var crypto = require(‘crypto’);
exports.encrypt = function (str, secret) {
var cipher = crypto.createCipher(‘aes192』, secret);
var enc = cipher.update(str, ‘utf8』, 『hex』);
enc += cipher.final(『hex』);
return enc;
};
exports.decrypt = function (str, secret) {
var decipher = crypto.createDecipher(‘aes192』, secret);
var dec = decipher.update(str, ‘hex』, 『utf8』);
dec += decipher.final(『utf8』);
return dec;
};
exports.md5 = function (str) {
var md5sum = crypto.createHash(『md5』);
md5sum.update(str);
str = md5sum.digest(『hex』);
return str;
};
exports.randomString = function (size) {
size = size || 6;
var code_string = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789』;
var max_num = code_string.length + 1;
var new_pass = ‘』;
while (size 0) {
new_pass += code_string.charAt(Math.floor(Math.random() * max_num));
size–;
}
return new_pass;
};
關於nodejs 怎麼實現 crypto des加密
var crypto = require(‘crypto’);
var key = ‘12345670’;
exports.des = {
algorithm:{ ecb:’des-ecb’,cbc:’des-cbc’ },
encrypt:function(plaintext,iv){
var key = new Buffer(key);
var iv = new Buffer(iv ? iv : 0);
var cipher = crypto.createCipheriv(this.algorithm.ecb, key, iv);
cipher.setAutoPadding(true) //default true
var ciph = cipher.update(plaintext, ‘utf8’, ‘base64’);
ciph += cipher.final(‘base64’);
return ciph;
},
decrypt:function(encrypt_text,iv){
var key = new Buffer(key);
var iv = new Buffer(iv ? iv : 0);
var decipher = crypto.createDecipheriv(this.algorithm.ecb, key, iv);
decipher.setAutoPadding(true);
var txt = decipher.update(encrypt_text, ‘base64’, ‘utf8’);
txt += decipher.final(‘utf8’);
return txt;
}
};
nodejs怎麼打包加密
使用require(‘crypto’)調用加密模塊。
加密模塊需要底層系統提供OpenSSL的支持。它提供了一種安全憑證的封裝方式,可以用於HTTPS安全網路以及普通HTTP連接。
該模塊還提供了一套針對OpenSSL的hash(哈希),hmac(密鑰哈希),cipher(編碼),decipher(解碼),sign(簽名)以及verify(驗證)等方法的封裝。
crypto.createCredentials(details)
原創文章,作者:ULJIZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329108.html