簡體   English   中英

C# 到節點加密哈希 - md5 和 sha256

[英]C# to node crypto hashing - md5 and sha256

這是我試圖移植到 Node crypto 中的 C# 代碼,但由於我不知道 C#,所以證明它有點棘手!

public static string EncryptStringToBytes_Aes(string username, string password) 
    {
      string encrypted = string.Empty;
      byte[] clearBytes = Encoding.UTF8.GetBytes(password);
      Console.WriteLine("1." + clearBytes);
      using (Aes aesAlg = Aes.Create())
      {
        byte[] k; byte[] iv;
        byte[] bytes = Encoding.UTF8.GetBytes(username); 
        k = SHA256.Create().ComputeHash(bytes);
        iv = MD5.Create().ComputeHash(bytes);
        aesAlg.Key = k;
        aesAlg.IV = iv;
        ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
        using (MemoryStream msEncrypt = new MemoryStream()) 
        {
          using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) {
          csEncrypt.Write(clearBytes, 0, clearBytes.Length); }
          encrypted = Convert.ToBase64String(msEncrypt.ToArray()); 
        }
      }
      return encrypted;
    }

C# 回復:

https://repl.it/@HarryLincoln/NegligiblePoisedHexagon

節點工作:

  • crypto.createCipheriv()看起來肯定是要走的路,但我不相信 c# 方法(SHA256.Create() 和 MD5.Create())關心密鑰和 iv 的長度 - 但crypto.createCipheriv()確實如此。

  • C# 使用 CryptoStream:所以我認為某種 Buffer 是為了查看一些類似的 C# -> Node crypto 的東西

真的很感激一些幫助!

.Net Framework - AES 加密默認使用 256 位密鑰和 CBC 模式以及 PKCS7 填充。

移植的代碼很容易閱讀,它只是這樣做:

return

BASE64 (
    AES_ENCRYPT (
        password,
        Key: SHA256(username),
        IV: MD5(username)
   )
)

同樣可以在 Node.js 上輕松實現。

const crypto = require('crypto');

const key = crypto.createHash('sha256').update('username', 'utf8').digest();
const iv = crypto.createHash('md5').update('username', 'utf8').digest();

const encryptor = crypto.createCipheriv("aes-256-cbc", key, iv);

var crypted = Buffer.concat([encryptor.update('password', 'utf8'), encryptor.final()]);

let base64data = crypted.toString('base64');

console.log(base64data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM