オブジェクトがデータベースから取り出された後にパスワードを解読する必要があります。どうすればこれを達成できますか? これは私の暗号化と復号化のコードです:
public class EncryptionHelper {
public static string Encrypt(string strToEncrypt) {
try {
TripleDESCryptoServiceProvider objDESCrypto = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider objHashMD5 = new MD5CryptoServiceProvider();
byte[] byteHash, byteBuff;
string strTempKey = Settings.Default.Keyword;
byteHash = objHashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(strTempKey));
objHashMD5 = null;
objDESCrypto.Key = byteHash;
objDESCrypto.Mode = CipherMode.ECB; //CBC, CFB
byteBuff = ASCIIEncoding.ASCII.GetBytes(strToEncrypt);
return Convert.ToBase64String(objDESCrypto.CreateEncryptor().
TransformFinalBlock(byteBuff, 0, byteBuff.Length));
} catch (Exception ex) {
return strToEncrypt;
}
}
public static string Decrypt(string strEncrypted) {
try {
TripleDESCryptoServiceProvider objDESCrypto =
new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider objHashMD5 = new MD5CryptoServiceProvider();
byte[] byteHash, byteBuff;
string strTempKey = Settings.Default.Keyword;
byteHash = objHashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(strTempKey));
objHashMD5 = null;
objDESCrypto.Key = byteHash;
objDESCrypto.Mode = CipherMode.ECB; //CBC, CFB
byteBuff = Convert.FromBase64String(strEncrypted);
string strDecrypted = ASCIIEncoding.ASCII.GetString
(objDESCrypto.CreateDecryptor().TransformFinalBlock
(byteBuff, 0, byteBuff.Length));
objDESCrypto = null;
return strDecrypted;
} catch (Exception ex) {
return "Wrong Input. " + ex.Message;
}
}
}
これは私のエンティティです:
public partial class S0Pin
{
public int ID { get; set; }
public string Serialnumber { get; set; }
public string Pin { get; set; }
public virtual User Creator { get; set; }
}
そして、これはオブジェクトを挿入する方法です
public bool AddS0Pin(S0Pin pin) {
log.Debug("add s0pin with serialnumber " + pin.Serialnumber);
var s0pin = S0Pin.SingleOrDefault(pn => pn.Serialnumber == pin.Serialnumber);
if (s0pin != null) {
s0pin.Pin = EncryptionHelper.Encrypt(pin.Pin);
} else {
this.S0Pin.Add(pin);
}
return this.SaveChanges() > 0;
}
データベースからデータを取得した後、データを復号化するにはどうすればよいですか? 最善の方法はエンティティにあります。