如何解密密码
这是我的.NET核心API控制器。
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Linq;
using Vantage.Core.Direct.BL;
using Vantage.Core.Direct.DAL.Models;
using VANTAGE_Dashboard.API.Helper;
namespace Vantage.Core.Direct.API.Controllers
{
[Route("[controller]")]
[ApiController]
public class LoginController : ControllerBase
{
private readonly VantageContext _context;
public LoginController(VantageContext context)
{
_context = context;
}
[HttpPost("login")]
public IActionResult Login([FromBody] AvLogin avLogin)
{
if (avLogin == null)
{
return BadRequest();
}
else {
// var user = _context.AvLogins.Where(a => a.Id == avLogin.Id).FirstOrDefault();
var user = _context.AvLogins.Where(a =>
a.Id == avLogin.Id && a.PasswordHash == avLogin.PasswordHash).FirstOrDefault();
if (user != null)
{
return Ok(new
{
StatusCode = 200,
Message = "Logged in Successfully"
});
}
else
{
return NotFound(new
{
StatusCode = 404,
Message= "User Not Found"
}) ;
}
}
}
}
}
这是我的解密类,
using System.Security.Cryptography;
using System.Text;
using System;
using System.Configuration;
namespace Vantage.DataAccessLayer
{
public class MD5Encryption
{
private static readonly string SecurityKey = "http://www.2am5ana.c0m";
// Hash an input string and return the hash as
// a 32 character hexadecimal string.
public static string GetMd5Hash(string input)
{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();
// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
// Return the hexadecimal string.
return sBuilder.ToString();
}
public static string Encrypt(string toEncrypt, bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
//System.Windows.Forms.MessageBox.Show(key);
//If hashing use get hashcode regards to your key
if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(SecurityKey));
//Always release the resources and flush data
// of the Cryptographic service provide. Best Practice
hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(SecurityKey);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
//set the secret key for the tripleDES algorithm
tdes.Key = keyArray;
//mode of operation. there are other 4 modes.
//We choose ECB(Electronic code Book)
tdes.Mode = CipherMode.ECB;
//padding mode(if any extra byte added)
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateEncryptor();
//transform the specified region of bytes array to resultArray
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0,
toEncryptArray.Length);
//Release resources held by TripleDes Encryptor
tdes.Clear();
//Return the encrypted data into unreadable string format
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
public static string Decrypt(string cipherString, bool useHashing)
{
byte[] keyArray;
//get the byte code of the string
byte[] toEncryptArray = Convert.FromBase64String(cipherString);
if (useHashing)
{
//if hashing was used get the hash code with regards to your key
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(SecurityKey));
//release any resource held by the MD5CryptoServiceProvider
hashmd5.Clear();
}
else
{
//if hashing was not implemented get the byte code of the key
keyArray = UTF8Encoding.UTF8.GetBytes(SecurityKey);
}
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
//set the secret key for the tripleDES algorithm
tdes.Key = keyArray;
//mode of operation. there are other 4 modes.
//We choose ECB(Electronic code Book)
tdes.Mode = CipherMode.ECB;
//padding mode(if any extra byte added)
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(
toEncryptArray, 0, toEncryptArray.Length);
//Release resources held by TripleDes Encryptor
tdes.Clear();
//return the Clear decrypted TEXT
return UTF8Encoding.UTF8.GetString(resultArray);
}
public static string DecryptEntityCon()
{
string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder
{
Metadata = "res://*/VantageModel.csdl|res://*/VantageModel.ssdl|res://*/VantageModel.msl",
Provider = "System.Data.SqlClient",
ProviderConnectionString = MD5Encryption.Decrypt(ConfigurationManager.ConnectionStrings["VantageConnectionString"].ConnectionString, true) + ";MultipleActiveResultSets=true"
}.ConnectionString;
return connectionString;
}
}
}
现在可以使用用户名登录:admin,密码 - :2FE3CB9E21922819E79A2781AF74E36D,但没有解密值。如何连接两个文件Decypt密码?
This is my .NET core API controller.
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Linq;
using Vantage.Core.Direct.BL;
using Vantage.Core.Direct.DAL.Models;
using VANTAGE_Dashboard.API.Helper;
namespace Vantage.Core.Direct.API.Controllers
{
[Route("[controller]")]
[ApiController]
public class LoginController : ControllerBase
{
private readonly VantageContext _context;
public LoginController(VantageContext context)
{
_context = context;
}
[HttpPost("login")]
public IActionResult Login([FromBody] AvLogin avLogin)
{
if (avLogin == null)
{
return BadRequest();
}
else {
// var user = _context.AvLogins.Where(a => a.Id == avLogin.Id).FirstOrDefault();
var user = _context.AvLogins.Where(a =>
a.Id == avLogin.Id && a.PasswordHash == avLogin.PasswordHash).FirstOrDefault();
if (user != null)
{
return Ok(new
{
StatusCode = 200,
Message = "Logged in Successfully"
});
}
else
{
return NotFound(new
{
StatusCode = 404,
Message= "User Not Found"
}) ;
}
}
}
}
}
This is my decryption class
using System.Security.Cryptography;
using System.Text;
using System;
using System.Configuration;
namespace Vantage.DataAccessLayer
{
public class MD5Encryption
{
private static readonly string SecurityKey = "http://www.2am5ana.c0m";
// Hash an input string and return the hash as
// a 32 character hexadecimal string.
public static string GetMd5Hash(string input)
{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();
// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
// Return the hexadecimal string.
return sBuilder.ToString();
}
public static string Encrypt(string toEncrypt, bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
//System.Windows.Forms.MessageBox.Show(key);
//If hashing use get hashcode regards to your key
if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(SecurityKey));
//Always release the resources and flush data
// of the Cryptographic service provide. Best Practice
hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(SecurityKey);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
//set the secret key for the tripleDES algorithm
tdes.Key = keyArray;
//mode of operation. there are other 4 modes.
//We choose ECB(Electronic code Book)
tdes.Mode = CipherMode.ECB;
//padding mode(if any extra byte added)
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateEncryptor();
//transform the specified region of bytes array to resultArray
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0,
toEncryptArray.Length);
//Release resources held by TripleDes Encryptor
tdes.Clear();
//Return the encrypted data into unreadable string format
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
public static string Decrypt(string cipherString, bool useHashing)
{
byte[] keyArray;
//get the byte code of the string
byte[] toEncryptArray = Convert.FromBase64String(cipherString);
if (useHashing)
{
//if hashing was used get the hash code with regards to your key
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(SecurityKey));
//release any resource held by the MD5CryptoServiceProvider
hashmd5.Clear();
}
else
{
//if hashing was not implemented get the byte code of the key
keyArray = UTF8Encoding.UTF8.GetBytes(SecurityKey);
}
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
//set the secret key for the tripleDES algorithm
tdes.Key = keyArray;
//mode of operation. there are other 4 modes.
//We choose ECB(Electronic code Book)
tdes.Mode = CipherMode.ECB;
//padding mode(if any extra byte added)
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(
toEncryptArray, 0, toEncryptArray.Length);
//Release resources held by TripleDes Encryptor
tdes.Clear();
//return the Clear decrypted TEXT
return UTF8Encoding.UTF8.GetString(resultArray);
}
public static string DecryptEntityCon()
{
string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder
{
Metadata = "res://*/VantageModel.csdl|res://*/VantageModel.ssdl|res://*/VantageModel.msl",
Provider = "System.Data.SqlClient",
ProviderConnectionString = MD5Encryption.Decrypt(ConfigurationManager.ConnectionStrings["VantageConnectionString"].ConnectionString, true) + ";MultipleActiveResultSets=true"
}.ConnectionString;
return connectionString;
}
}
}
now can login using userName-: admin , Password-: 2fe3cb9e21922819e79a2781af74e36d but not decrypt value. how to connect both files decypt password ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论