创建一个具有加密用户名/密码的链接,用于登录网站
本文关键字:密码 链接 网站 登录 用于 用户 一个 加密 创建 | 更新日期: 2023-09-27 18:24:55
我正在开发一个需要用户名和密码才能登录的ASP.NET应用程序。我希望邀请一组用户登录该网站并使用该应用程序。但是,我不想单独发送用户名和密码,而是发送一个链接(该链接将由应用程序自动生成,其中包含用户名/密码的加密版本)。该用户的用户名和密码存储在数据库中。单击链接将自动将用户登录到应用程序中。我在一些web应用程序中看到过这种行为,但不确定如何实现。感谢您的帮助。
谢谢kabir
public static class SecurePassword
{
#region Fields
static byte[] _entropy = System.Text.Encoding.Unicode.GetBytes("Db Config Password");
#endregion
#region Methods
public static SecureString GetSecureString(string password)
{
SecureString secureString = new SecureString();
foreach (char c in password)
{
secureString.AppendChar(c);
}
secureString.MakeReadOnly();
return secureString;
}
public static string GetInsecureString(SecureString securePassword)
{
string password = string.Empty;
IntPtr ptr = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(securePassword);
try
{
password = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(ptr);
}
finally
{
System.Runtime.InteropServices.Marshal.ZeroFreeBSTR(ptr);
}
return password;
}
public static string EncryptString(SecureString securePassword)
{
byte[] encryptedData = System.Security.Cryptography.ProtectedData.Protect(
System.Text.Encoding.Unicode.GetBytes(GetInsecureString(securePassword)),
_entropy,
System.Security.Cryptography.DataProtectionScope.CurrentUser);
return Convert.ToBase64String(encryptedData);
}
public static SecureString DecryptString(string encryptedData)
{
try
{
byte[] decryptedData = System.Security.Cryptography.ProtectedData.Unprotect(
Convert.FromBase64String(encryptedData),
_entropy,
System.Security.Cryptography.DataProtectionScope.CurrentUser);
return GetSecureString(System.Text.Encoding.Unicode.GetString(decryptedData));
}
catch
{
return new SecureString();
}
}
#endregion
}
这是用于加密/解密的类。
这里如何使用它:
string ecryptPass = BO.SecurePassword.EncryptString(BO.SecurePassword.GetSecureString(password));
string decryptPass = BO.SecurePassword.GetInsecureString((BO.SecurePassword.DecryptString(encrypedRequestParamPassword)));
转到页面时创建页面LinkLogin.aspx读取请求参数并解密页面加载中的密码/用户名,然后使用用户凭据将其重定向到所需页面。