首页 > 解决方案 > Asp.Net 中使用的加密是什么?

问题描述

再会!

我是 Asp.Net 的新手,我想重新创建 Asp.Net 的注册。我正在尝试查找 Asp.Net 默认使用的加密代码和插入命令。正如标题所示,我想知道使用的加密方法是什么?它是散列还是 md5 或其他方法,我在哪里可以找到代码?

通常,Register后端代码都有这个命令

var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
var signInManager = Context.GetOwinContext().Get<ApplicationSignInManager>();
var user = new ApplicationUser() { UserName = Username.Text, Email = Username.Text };
IdentityResult result = manager.Create(user, Password.Text);

我知道 signInManager 不是命令,我尝试检查IdentityResult但一无所获。

提前致谢。

标签: c#asp.netpassword-encryption

解决方案


加密密码

string Password = EncryptString(Password.Text);

在这里,我使用 UTF8 加密密码...所以您可以将加密的密码存储在数据库中...

public static string EncryptString(string str)
{
    return Encrypt(str, "!#$a54?3");
}

private static string Encrypt(string stringToEncrypt, string sEncryptionKey)
{
    
    byte[] key = { };
    byte[] IV = { 10, 20, 30, 40, 50, 60, 70, 80 };
    byte[] inputByteArray; //Convert.ToByte(stringToEncrypt.Length)
    try
    {
        key = Encoding.UTF8.GetBytes(sEncryptionKey.Substring(0, 8));
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        inputByteArray = Encoding.UTF8.GetBytes(stringToEncrypt);
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(key, IV), CryptoStreamMode.Write);
        cs.Write(inputByteArray, 0, inputByteArray.Length);
        cs.FlushFinalBlock();
        return Convert.ToBase64String(ms.ToArray());
    }
    catch (System.Exception ex)
    {
        throw ex;
    }
}

解密密码

同样的方式你可以解密密码

public static string DecryptString(string str)
{
    return Decrypt(str, "!#$a54?3");
}

private static string Decrypt(string stringToDecrypt, string sEncryptionKey)
{
    
    byte[] key = { };
    byte[] IV = { 10, 20, 30, 40, 50, 60, 70, 80 }; //try {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF}
    byte[] inputByteArray = new byte[stringToDecrypt.Length];
    try
    {
        key = Encoding.UTF8.GetBytes(sEncryptionKey.Substring(0, 8));
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        inputByteArray = Convert.FromBase64String(stringToDecrypt.Replace(" ", "+"));
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
        cs.Write(inputByteArray, 0, inputByteArray.Length);
        cs.FlushFinalBlock();
        Encoding encoding = Encoding.UTF8;
        return encoding.GetString(ms.ToArray());

    }
    catch (System.Exception ex)
    {
        throw ex;
    }
}

注意:- 使用相同的密钥加密和解密密码...这里我使用!#$a54?3


推荐阅读