Есть ли способ сделать это в таблице Azure?
Да, в вашей сущности пометьте свойства с атрибутом EncryptProperty
[EncryptProperty]
public string UserName { get; set; }
[EncryptProperty]
public string Email { get; set; }
Мы также могли быобратитесь к этому документу , чтобы получить больше информации о том, как зашифровать табличную сущность.
Я также делаю демонстрацию для нее, ниже приведены подробные шаги.
1.Создатьконсольное приложение .net
2.Установите WindowsAzure.Storage и Microsoft.Azure.KeyVault.Extensions с помощью nuget
3.Добавьтеновый класс с именем User со следующим кодом.
public class User:TableEntity
{
public string UserId { get; set; }
[EncryptProperty]
public string UserName { get; set; }
[EncryptProperty]
public string Email { get; set; }
public User()
{
PartitionKey = "Tom";
RowKey = Guid.NewGuid().ToString();
}
public User(string userId, string userName, string email)
{
PartitionKey = "Tom";
RowKey = Guid.NewGuid().ToString();
UserId = userId;
UserName = userName;
Email = email;
}
}
4.Добавьте тестовый код в Program.cs
static void Main(string[] args)
{
var connectionstring = "DefaultEndpointsProtocol=https;AccountName=accountName;AccountKey=accountKey";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);
RsaKey key = new RsaKey("mykey" /* key identifier */);
// Create the encryption policy to be used for upload and download.
TableEncryptionPolicy policy = new TableEncryptionPolicy(key, null);
TableRequestOptions options = new TableRequestOptions
{
EncryptionPolicy = policy
};
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
// Create the CloudTable object that represents the "tomtest" table.
CloudTable table = tableClient.GetTableReference("tomtest");
table.CreateIfNotExists();
//var insertList = new List<User>();
var user = new User { UserId = Guid.NewGuid().ToString(),UserName="tom1",Email="tom1@email.com" };
table.Execute(TableOperation.Insert(user), options);
TableRequestOptions retrieveoptions = new TableRequestOptions
{
EncryptionPolicy = policy
};
var query = new TableQuery<User>().Where(TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, user.RowKey));
var list = table.ExecuteQuery(query, retrieveoptions);
foreach (User entity in list)
{
Console.WriteLine($"PartionKey:{entity.PartitionKey},RowKey:{entity.RowKey},userId:{entity.UserId},UserName: {entity.UserName},email:{entity.Email}");
}
Console.ReadKey();
}
5. Проверьте его с помощью обозревателя хранилищ Microsoft Azure
6. Извлечь сущность таблицы из таблицы и вывести на консоль