将C#AES加密移植到Java for Node.js [英] Porting C# AES Encryption to Javascript for Node.js

查看:128
本文介绍了将C#AES加密移植到Java for Node.js的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

寻求帮助,以使用加密或等效模块将以下C#代码移植到Node.js中。

 私有字符串password = FlU4c8yQKLkYuFwsgyU4LFeIf7m3Qwy + poMBdULEMqw =; 
private byte [] salt = Encoding.ASCII.GetBytes( ## oEDA102ExChAnGe99#$#);
Aes加密器= Aes.Create();
Rfc2898DeriveBytes pdb =新的Rfc2898DeriveBytes(密码,盐);
字符串pdbStr = Convert.ToBase64String(pdb.GetBytes(32));
Console.WriteLine(pdbStr);
cryptoor.Key = pdb.GetBytes(32);
cryptoor.IV = pdb.GetBytes(16);

尝试按以下方式移植到javascript中,但结果值不相同。

  var password = FlU4c8yQKLkYuFwsgyU4LFeIf7m3Qwy + poMBdULEMqw =; 
var salt = ## oEDA102ExChAnGe99#$#;
var pdbBytes = crypto.pbkdf2Sync(Buffer.from(password,'base64'),new Buffer(salt,'base64'),1000,32);
var pdbStr = new Buffer(pdbBytes).toString(’base64’)
console.log( pdbStr,pdbStr);

控制台输出:
C#-GZlqgdLbMQ753dTmx1nlJ6HgdabTjW1CeCSoIYkLM4E =
JS-tuDsZJJEEwxyXA7L p>

任何帮助都非常感谢。谢谢。

解决方案

这些代码部分生成的结果相同。



,但是我没有从c#中得到 GZlqgdLbMQ753dTmx1nlJ6HgdabTjW1CeCSoIYkLM4E =结果。



c# >

  byte [] password = Convert.FromBase64String( FlU4c8yQKLkYuFwsgyU4LFeIf7m3Qwy + poMBdULEMqw =);; 
byte [] salt = Encoding.ASCII.GetBytes( ## oEDA102ExChAnGe99#$#);
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password,salt,1000);
字符串pdbStr = Convert.ToBase64String(pdb.GetBytes(32));
Console.WriteLine(pdbStr);
//输出:RMqDMSV6d8uT2NicGM212r3KMFt7ZsOI2q8 + 0Rr0WZQ =

JS

  var crypto = require( crypto); 
var password = FlU4c8yQKLkYuFwsgyU4LFeIf7m3Qwy + poMBdULEMqw =;
var salt = ## oEDA102ExChAnGe99#$#;
crypto.DEFAULT_ENCODING =‘base64’;
var pdbBytes = crypto.pbkdf2Sync(new Buffer(password,'base64'),salt,1000,32,'sha1');
var pdbStr = new Buffer(pdbBytes).toString()
console.log( pdbStr,pdbStr);
//输出:RMqDMSV6d8uT2NicGM212r3KMFt7ZsOI2q8 + 0Rr0WZQ =


Looking for help to port below C# code into Node.js using crypto or equivalent module.

private string password="FlU4c8yQKLkYuFwsgyU4LFeIf7m3Qwy+poMBdULEMqw=";
private byte[] salt = Encoding.ASCII.GetBytes("##oEDA102ExChAnGe99#$#");
Aes encryptor = Aes.Create();
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, salt);
string pdbStr = Convert.ToBase64String(pdb.GetBytes(32));
Console.WriteLine(pdbStr);
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);

Tried porting into javascript as below, but the resulted value are not the same.

var password = "FlU4c8yQKLkYuFwsgyU4LFeIf7m3Qwy+poMBdULEMqw=";
var salt = "##oEDA102ExChAnGe99#$#";
var pdbBytes = crypto.pbkdf2Sync(Buffer.from(password, 'base64'), new Buffer(salt, 'base64'), 1000, 32);
var pdbStr = new Buffer(pdbBytes).toString('base64')
console.log("pdbStr", pdbStr);

Console output: C# - GZlqgdLbMQ753dTmx1nlJ6HgdabTjW1CeCSoIYkLM4E= JS - tuDsZJEEwxyXP7RvuYVxGmDy20AvMJAqkLoXX78sEU8=

Any help is much appreciated. Thanks.

解决方案

these codes parts are generating same the result.

but i did not get 'GZlqgdLbMQ753dTmx1nlJ6HgdabTjW1CeCSoIYkLM4E=' result from c#.

c#

    byte[] password= Convert.FromBase64String("FlU4c8yQKLkYuFwsgyU4LFeIf7m3Qwy+poMBdULEMqw=");
    byte[] salt = Encoding.ASCII.GetBytes("##oEDA102ExChAnGe99#$#");
    Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password,salt,1000);
    string pdbStr =Convert.ToBase64String(pdb.GetBytes(32));
    Console.WriteLine(pdbStr);
    //outpu : RMqDMSV6d8uT2NicGM212r3KMFt7ZsOI2q8+0Rr0WZQ=

JS

var crypto = require("crypto");
var password = "FlU4c8yQKLkYuFwsgyU4LFeIf7m3Qwy+poMBdULEMqw=";
var salt = "##oEDA102ExChAnGe99#$#";
crypto.DEFAULT_ENCODING = 'base64';
var pdbBytes = crypto.pbkdf2Sync(new Buffer(password,'base64'), salt, 1000, 32,'sha1');
var pdbStr = new Buffer(pdbBytes).toString()
console.log("pdbStr", pdbStr);
//outpu : RMqDMSV6d8uT2NicGM212r3KMFt7ZsOI2q8+0Rr0WZQ=

这篇关于将C#AES加密移植到Java for Node.js的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆