假设我们有一个数据对象Patient
,我们正在将List<Patient>
绑定到UI小部件。
public class Patient
{
public Patient(){}
public string Name {get;set;}
public string MedicalNotes {get;set;}
}
我们希望在将记录写入数据库之前加密 MedicalNotes
属性的内容(假设我们是一家小公司,并且无法承担提供的SQL数据库的许可费用透明加密功能)和在列绑定到UI小部件之前解密列的内容。
我们是否实例化单个加密类并将其引用提供给Patient
构造函数,以便List中的每个Patient对象都可以调用加密对象的方法?
或者Crypto实例是否位于Patient
对象之外并在数据库IO类和List<Patient>
答案 0 :(得分:1)
您说您的数据库层需要增加安全性。所以我猜它属于那一层。保存前加密,加载后解密。
答案 1 :(得分:1)
如果我是你,我会把它分成3层,你的模型层不关心加密过程,你的数据库也不关心。这些责任必须交给另一方:
模型层:
public class Patient
{
public string Name { get; set; }
public string MedicalNotes { get; set; }
}
数据库层:
public static class PatientDb
{
public static void SavePatient(Patient patient)
{
//whatever happens here, you didn't post this
}
}
中间层:
public class PatientHelpers
{
public void SavePatient(Patient unencryptedPatient)
{
var encrypted = Crypto.EncryptPatient(unencryptedPatient);
PatientDb.SavePatient(encrypted);
}
}
public static class Crypto
{
public Patient EncryptPatient(Patient patient)
{
//whatever happens here, you didn't post this
return patient;
}
}