我有一个用 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
有人可以向我解释如何进行此过程吗?