public MemberItems DecryptResult(MemberItems result) { result.GetType().GetProperties().ToList().ForEach(p => { if (p.Name == "IteamUpdateAdminID" || p.Name == "IteamCreateAdminID" || p.Name == "Id" || p.Name == "Version" || p.Name == "Deleted" || p.Name == "CreatedAt" || p.Name == "UpdatedAt" || p.Name == "HideYN" || p.Name == "DeleteYN") // 복호화 안하고 통과 시킬 녀석들 { // 추가 처리 } else { //Debug.WriteLine((p.GetValue(result, null) ?? "").ToString()); p.SetValue(result, Crypto.AES_decrypt((p.GetValue(result, null) ?? "").ToString(), globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV), null); //Debug.WriteLine((p.GetValue(result, null) ?? "").ToString()); } }); return result; }
//암호화 처리 public MemberItems EncryptResult(MemberItems item) { try { item.MemberItemID = Crypto.AES_encrypt(item.MemberItemID, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.MemberID = Crypto.AES_encrypt(item.MemberID, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.Members.Name1 = Crypto.AES_encrypt(item.Members.Name1, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.ItemListID = Crypto.AES_encrypt(item.ItemListID, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.ItemLists.ItemName = Crypto.AES_encrypt(item.ItemLists.ItemName, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.ItemCount = Crypto.AES_encrypt(item.ItemCount, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.ItemStatus = Crypto.AES_encrypt(item.ItemStatus, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol1 = Crypto.AES_encrypt(item.sCol1, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol2 = Crypto.AES_encrypt(item.sCol2, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol3 = Crypto.AES_encrypt(item.sCol3, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol4 = Crypto.AES_encrypt(item.sCol4, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol5 = Crypto.AES_encrypt(item.sCol5, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol6 = Crypto.AES_encrypt(item.sCol6, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol7 = Crypto.AES_encrypt(item.sCol7, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol8 = Crypto.AES_encrypt(item.sCol8, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol9 = Crypto.AES_encrypt(item.sCol9, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol10 = Crypto.AES_encrypt(item.sCol10, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); //result.GetType().GetProperties().ToList().ForEach(p => //{ // // Edit에서 암호화 시작 // if (p.Name == "HideYN" || p.Name == "DeleteYN" || p.Name == "CreatedAt" || p.Name == "UpdatedAt" || p.Name == "DataFromRegion" || p.Name == "DataFromRegionDT") // { // // 추가 처리 // } // else // { // Debug.WriteLine(p.PropertyType.FullName); // Debug.WriteLine((p.GetValue(result, null) ?? "").ToString()); // p.SetValue(result, Crypto.AES_encrypt((p.GetValue(result, null) ?? "").ToString(), globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV), null); // null인 경우 오류 가능성. 빈문자열로 치환해 암호화 한다. // } //}); } catch (Exception) { throw; } return item; }
// 복호화 수행 public MemberItems DecryptResult(MemberItems item) { try { item.MemberItemID = Crypto.AES_decrypt(item.MemberItemID, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.MemberID = Crypto.AES_decrypt(item.MemberID, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.Members.Name1 = Crypto.AES_decrypt(item.Members.Name1, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.ItemListID = Crypto.AES_decrypt(item.ItemListID, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.ItemLists.ItemName = Crypto.AES_decrypt(item.ItemLists.ItemName, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.ItemCount = Crypto.AES_decrypt(item.ItemCount, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.ItemStatus = Crypto.AES_decrypt(item.ItemStatus, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol1 = Crypto.AES_decrypt(item.sCol1, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol2 = Crypto.AES_decrypt(item.sCol2, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol3 = Crypto.AES_decrypt(item.sCol3, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol4 = Crypto.AES_decrypt(item.sCol4, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol5 = Crypto.AES_decrypt(item.sCol5, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol6 = Crypto.AES_decrypt(item.sCol6, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol7 = Crypto.AES_decrypt(item.sCol7, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol8 = Crypto.AES_decrypt(item.sCol8, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol9 = Crypto.AES_decrypt(item.sCol9, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); item.sCol10 = Crypto.AES_decrypt(item.sCol10, globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV); //result.GetType().GetProperties().ToList().ForEach(p => //{ // if (p.Name == "HideYN" || p.Name == "DeleteYN" || p.Name == "CreatedAt" || p.Name == "UpdatedAt" || p.Name == "DataFromRegion" || p.Name == "DataFromRegionDT") // 복호화 안하고 통과 시킬 녀석들 // { // // 추가 처리 // } // else // { // p.SetValue(result, Crypto.AES_decrypt((p.GetValue(result, null) ?? "").ToString(), globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV), null); // } //}); } catch (Exception) { throw; } return item; }
public MemberItems EncryptResult(MemberItems result) { result.GetType().GetProperties().ToList().ForEach(p => { // Edit이나 Create의 경우는 필드를 체크할 필요 없음. - EF의 특성임. // Edit에서 암호화 시작 if (p.Name == "IteamUpdateAdminID" || p.Name == "IteamCreateAdminID" || p.Name == "Id" || p.Name == "Version" || p.Name == "Deleted" || p.Name == "CreatedAt" || p.Name == "UpdatedAt" || p.Name == "HideYN" || p.Name == "DeleteYN") // 현재 암호화 안하고 통과 시킬 녀석들 { // 추가 처리 } else { // edit을 저장하려 할 경우 EF에서 빈문자열의 경우 null이 들어오고 처리 되지 않는다. // view에서 annotation? // EF의 특성 // string이 아닌 datetimeoffset 등에서도 오류가 발생한다. int도 발생하겠지. // reflection 쓰지 말까... Debug.WriteLine(p.PropertyType.FullName); Debug.WriteLine((p.GetValue(result, null) ?? "").ToString()); p.SetValue(result, Crypto.AES_encrypt((p.GetValue(result, null) ?? "").ToString(), globalVal.CloudBreadCryptKey, globalVal.CloudBreadCryptIV), null); // null인 경우 오류 가능성. 빈문자열로 치환해 암호화 한다. } }); return result; }