加密密码C#Decrypt Node.js

时间:2017-02-16 12:17:45

标签: javascript c# node.js encryption cryptography

我有一个用 C#制作的桌面应用程序,以及一个带有 node.js 的Web应用程序。在 C#应用程序中,我创建了用户,我必须从这些用户登录。我想要的是从c#app 加密 密码并将其保存到sql server,当Web客户端登录时,他们的密码被加密并与密码进行比较来自数据库。

我已经完成了几个教程,但我无法弄清楚如何做到这一点。

到目前为止,我所做的是将密码保存为c#应用程序中的字节,但我不知道如何将其转换为字符串并在node.js中解密它

我还能够在Web应用程序中加密密码,如下所示:

var key = CryptoJS.enc.Utf8.parse('8080808080808080');
var iv = CryptoJS.enc.Utf8.parse('8080808080808080');

  var encryptedpassword = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse($('#input_password').val()), key, {
      keySize: 128 / 8,
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
  });

c#中的密码密码:

    public static byte[] EncryptStringToBytes(string plainText, byte[] key, byte[] iv) {

      // Check arguments.
      if (plainText == null || plainText.Length <= 0) {
        throw new ArgumentNullException("plainText");
      }
      if (key == null || key.Length <= 0) {
        throw new ArgumentNullException("key");
      }
      if (iv == null || iv.Length <= 0) {
        throw new ArgumentNullException("key");
      }
      byte[] encrypted;
      // Create a RijndaelManaged object
      // with the specified key and IV.
      using (var rijAlg = new RijndaelManaged()) {
        rijAlg.Mode = CipherMode.CBC;
        rijAlg.Padding = PaddingMode.PKCS7;
        rijAlg.FeedbackSize = 128;

        rijAlg.Key = key;
        rijAlg.IV = iv;

        // Create a decrytor to perform the stream transform.
        var encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);

        // Create the streams used for encryption.
        using (var msEncrypt = new MemoryStream()) {
          using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) {
            using (var swEncrypt = new StreamWriter(csEncrypt)) {
              //Write all data to the stream.
              swEncrypt.Write(plainText);
            }
            encrypted = msEncrypt.ToArray();
          }
        }
      }

      // Return the encrypted bytes from the memory stream.
      return encrypted;
    }

加密密码并保存在sql server中:

  Byte keybytes = Encoding.UTF8.GetBytes("8080808080808080");
  var iv = Encoding.UTF8.GetBytes("8080808080808080");
  user.password = AESEncrytDecry.EncryptStringToBytes(textEditPassword.Text, keybytes, iv);
//... save in sql

有人可以向我解释如何进行此过程吗?

0 个答案:

没有答案