标签: node-crypto

如何使用Node.js Crypto创建HMAC-SHA1哈希?

我想创建一个哈希I love cupcakes(用密钥签名abcdeg)

如何使用Node.js加密创建该哈希?

javascript algorithm hash node.js node-crypto

190
推荐指数
3
解决办法
10万
查看次数

如何使用Node.js加密创建一对私钥/公钥?

我必须生成两个密钥(私有和公共)来加密公共文本,并让拥有私钥的用户解密文本.

有可能使用Crypto模块吗?

node.js node-crypto

37
推荐指数
7
解决办法
4万
查看次数

nodejs中的SALT和HASH密码w/crypto

我试图找出如何使用crypto模块在nodejs中加密和散列密码.我可以创建哈希密码来做到这一点:

UserSchema.pre('save', function(next) {
  var user = this;

  var salt = crypto.randomBytes(128).toString('base64');
  crypto.pbkdf2(user.password, salt, 10000, 512, function(err, derivedKey) {
    user.password = derivedKey;
    next();
  });
});
Run Code Online (Sandbox Code Playgroud)

但是我对如何验证密码感到困惑.

UserSchema.methods.validPassword = function(password) {    
  // need to salt and hash this password I think to compare
  // how to I get the salt?
}
Run Code Online (Sandbox Code Playgroud)

node.js node-crypto

30
推荐指数
6
解决办法
5万
查看次数

将SHA-256与NodeJS加密一起使用

我试图在NodeJS中散列变量,如下所示:

var crypto = require('crypto');

var hash = crypto.createHash('sha256');

var code = 'bacon';

code = hash.update(code);
code = hash.digest(code);

console.log(code);
Run Code Online (Sandbox Code Playgroud)

但看起来我误解了文档作为console.log没有记录一个哈希版本的培根,而只是一些关于SlowBuffer的信息.

这样做的正确方法是什么?

node.js node-crypto

26
推荐指数
3
解决办法
2万
查看次数

我需要从npm安装加密模块吗?

我在我的应用程序中使用加密模块.似乎在nodejs http://nodejs.org/api/crypto.html中分布了加密模块, 所以我需要做npm install crypto吗?有什么区别来自https://npmjs.org/package/crypto和nodejs api加密模块?

node.js npm node-crypto

13
推荐指数
1
解决办法
2万
查看次数

为什么crypto.createHash在新版本中返回不同的输出?

问题

我有node.js模块crypto.createHash用于生成md5哈希.

最近我注意到crypto模块生成的哈希在新版本中有所不同:

require('crypto').createHash('md5').update('¥').digest('hex')
Run Code Online (Sandbox Code Playgroud)

Node.js v0.10.0

输出: ab3af8566ddd20d7efc9b314abe90755

Node.js v6.1.0

输出: 07625e142e4ac5961de57472657a88c1

我想知道新版本的原因是什么,我该如何解决?

更新

关于GitHub的类似问题:

javascript hash backwards-compatibility node.js node-crypto

13
推荐指数
1
解决办法
5257
查看次数

Node JS crypto,无法在带重音的字符上创建hmac

当我尝试加密的文本具有重音字符(例如ä,ï,ë)时,我遇到了在NodeJS中生成正确签名(使用crypto.js)的问题

generateSignature = function (str, secKey) { 
 var hmac = crypto.createHmac('sha1', secKey);
 var sig = hmac.update(str).digest('hex');
 return sig;
};
Run Code Online (Sandbox Code Playgroud)

如果'str'不包含重音字符(如ä,ï,ë等字符),则此函数将返回正确的HMAC签名.如果文本中存在重音字符,则不会返回正确的HMAC.重音字符在UTF8编码中有效,所以我不知道为什么加密有问题.可能是我需要以某种方式告诉加密我正在签署utf8编码文本,但我不知道如何做到这一点.

这篇文章中描述了完全相同的问题:带有重音的NodeJS hmac摘要问题 然而,帖子本身以及答案对我来说没有意义(因为他们传递他们想要加密的数据,秘密密钥应该在哪里走).

以下是str和secKey的硬编码值的代码版本:

  var crypto = require('crypto');

  str="äïë";  
  secKey="secret"; 
  var hmac = crypto.createHmac('sha1', secKey);
  var sig = hmac.update(new Buffer(str, 'utf8')).digest('hex');
  console.log("Sig:      " + sig);
  console.log("Expected: 094b2ba039775bbf970a58e4a0a61b248953d30b"); 
  // "Expected" was generated using http://hash.online-convert.com/sha1-generator
Run Code Online (Sandbox Code Playgroud)

输出::

西格:39c9f1a6094c76534157739681456e7878557f58

预计:094b2ba039775bbf970a58e4a0a61b248953d30b

谢谢

utf-8 hmac non-ascii-characters node.js node-crypto

12
推荐指数
1
解决办法
5723
查看次数

使用公钥验证Node.JS加密中的签名

有没有一种很好的方法来使用公钥验证Node.JS(v0.4 +)中的签名?

当前的加密模块允许使用证书但不允许使用公钥.例如:

var crypto = require("crypto");

verifier = crypto.createVerifier("sha1");
verifier.update("signed data");
verifier.verify(CERT, signature);
Run Code Online (Sandbox Code Playgroud)

变量CERT需要签名证书(我猜公钥是从中提取的)但我所拥有的只是公钥而不是证书.

只有实现这一点的可靠方法似乎是将数据,公钥和签名的内容转储到文件中并执行 openssl dgst

fs.writeFileSync("public.key", pubkey);
fs.writeFileSync("sig.sha1", signature);
fs.writeFileSync("data.txt", data);
exec("openssl dgst -sha1 -verify public.key -signature sig.sha1 data.txt", ...)
Run Code Online (Sandbox Code Playgroud)

但是每次我需要验证签名时创建(和删除)文件似乎是完全浪费.

任何好的想法如何做得更好?

更新2011-08-03

Node.js v0.5中的加密模块允许使用证书和公钥 (RSA或X.509)进行验证

openssl cryptography node.js node-crypto

11
推荐指数
1
解决办法
6784
查看次数

Node.js和加密库

我在使用Node的加密库时遇到了奇怪的问题.我写了这个简单的AES测试脚本:

var cipher = crypto.createCipher('aes-256-cbc','InmbuvP6Z8')
var text = "123|123123123123123";
cipher.update(text,'utf8','hex')
var crypted = cipher.final('hex')
var decipher = crypto.createDecipher('aes-256-cbc','InmbuvP6Z8')
decipher.update(crypted,'hex','utf8')
var dec = decipher.final('utf8')
Run Code Online (Sandbox Code Playgroud)

当我执行console.log(dec)时,它为null.出于某种原因,如果我将测试设置为"123 | 123123",它可以工作.那么为什么"123 | 123123"工作但"123 | 123123123123123"不工作?

encryption aes node.js node-crypto

10
推荐指数
2
解决办法
2万
查看次数

如何使用加密创建random-salt-hash

我想使用node.js crypto lib创建一个salt-hash,而不必解析任何硬编码数据.

硬编码我的意思是什么?

var salt, hardcodedString = "8397dhdjhjh";
crypto.createHmac('sha512', hardcodedString).update(salt).digest("base64");
Run Code Online (Sandbox Code Playgroud)

如果不使用原始javascript,随机函数或硬编码,我怎么能创建一个随机字符串?

问候

UPDATE

var Crypto = require('crypto')
    , mongoose = require('mongoose');

module.exports = mongoose.model('User', new mongoose.Schema({
    username: {
        type: String
        , required: true
        , index: { unique: true, sparse: true }
        , set: toLower
    },
    email: {
        type: String
        , required: true
        , index: { unique: true, sparse: true }
        , set: toLower
    },
    salt: {
        type: String
        , set: generateSalt
    },
    password: {
        type: String
        , set: encodePassword …
Run Code Online (Sandbox Code Playgroud)

javascript cryptography node.js node-crypto

10
推荐指数
1
解决办法
2万
查看次数