我有一个Xamarin.iOS应用程序,它使用Akavache缓存数据并减少不必要的服务器请求数据的数量.一切都像预期的那样运作得很好BlobCache.LocalMachine,喜欢它.
现在我想确保加密后的数据处于静止状态.从在线研究和阅读文档,我发现默认实现并没有实际加密iOS上的缓存,我实际上需要提供自定义实现IEncryptionProvider.
我跟着这篇文章:http://kent-boogaart.com/blog/password-protected-encryption-provider-for-akavache
添加了此线程的输入:https://github.com/akavache/Akavache/issues/190
结束了这个实现:
public interface IPasswordProtectedEncryptionProvider : IEncryptionProvider
{
void SetPassword(string password);
}
public sealed class MyEncryptionProvider : IPasswordProtectedEncryptionProvider
{
static readonly byte[] salt = Encoding.ASCII.GetBytes("dVBZMQWyFRcJOIas");
readonly IScheduler scheduler;
readonly SymmetricAlgorithm symmetricAlgorithm;
ICryptoTransform decryptTransform;
ICryptoTransform encryptTransform;
public MyEncryptionProvider()
{
scheduler = BlobCache.TaskpoolScheduler ?? throw new ArgumentNullException(nameof(scheduler), "Scheduler instance is null");
symmetricAlgorithm = new RijndaelManaged();
var securePassword = "kadhaskdhsakhaskjdhaskjdhaskdjashdkjahkfghkjhew";
SetPassword(securePassword);
}
public void SetPassword(string password)
{
if(password == null) …Run Code Online (Sandbox Code Playgroud)