在Azure redis缓存中加密和解密值

在Azure redis缓存中加密和解密值,azure,encryption,public-key-encryption,stackexchange.redis,azure-redis-cache,Azure,Encryption,Public Key Encryption,Stackexchange.redis,Azure Redis Cache,我想在存储时加密,在读取redis缓存中的值时解密。什么是最好的安全方法。由于GDPR合规性,我无法直接存储用户别名 下面是我将其转换为字节并将字节数组存储在redis中的方法 但是我无法从redis解密字节数组。更新 PRIVIOUS 你可以 public ActionResult RedisCache() { ViewBag.Message=“ASP.NET上针对Redis的Azure缓存的简单示例。”; var lazyConnection=newlazy(()=> { 字符串ca

我想在存储时加密,在读取redis缓存中的值时解密。什么是最好的安全方法。由于GDPR合规性,我无法直接存储用户别名

下面是我将其转换为字节并将字节数组存储在redis中的方法


但是我无法从redis解密字节数组。

更新

PRIVIOUS

你可以

public ActionResult RedisCache()
{
ViewBag.Message=“ASP.NET上针对Redis的Azure缓存的简单示例。”;
var lazyConnection=newlazy(()=>
{
字符串cacheConnection=\u configuration.GetSection(“cacheConnection”).Value;
返回ConnectionMultiplexer.Connect(缓存连接);
});
//Connection是指返回ConnectionMultiplexer的属性
//如前一个示例所示。
IDatabase cache=lazyConnection.Value.GetDatabase();
//使用缓存对象执行缓存操作。。。
string original=“这里有一些要加密的数据!”;
字符串guid=guid.NewGuid().ToString();
字节[]myRijndaelKey;
字节[]myRijndaelIV;
使用(RijndaelManaged myRijndael=new RijndaelManaged())
{
myRijndael.GenerateKey();
myRijndael.GenerateIV();
myRijndaelKey=myRijndael.Key;
Myrijndaelv=myRijndael.IV;
}
byte[]encrypted_original=EncryptandDecrypt.EncryptStringToBytes(原件,myRijndaelKey,myRijndaelIV);
ViewBag.command6=原件;
ViewBag.command6Result=加密的\u原件;
//设置原始数据
StringSet(guid,加密的\u原件);
//设置键和iv
StringSet(guid+“Key”,myRijndaelKey);
StringSet(guid+“IV”,myRijndaelIV);
//从redis获取数据
字节[]获取加密的原始字节=(字节[])缓存。字符串获取(guid);
字节[]get_Key=(字节[])cache.StringGet(guid+“Key”);
字节[]get_IV=(字节[])cache.StringGet(guid+“IV”);
string decrypted\u originalString=EncryptandDecrypt.DecryptStringFromBytes(获取加密的\u originalByte,获取密钥,获取IV);
ViewBag.command7=“从Redis获取:”+Get\u encrypted\u originalByte;
ViewBag.command7Result=“解密的数据:”+解密的\u原始字符串;
lazyConnection.Value.Dispose();
返回视图();
}

关于redis配置的几个问题,1。您是否也有使用TlS1.2的设置?2.SSL端口仅适用于您创建的redis?@AshutoshKumar我更新了答案。图中显示了我的redis设置。我遵循了您的提示,尝试后一切正常。谢谢您的回复,我尝试了非常类似的事情,但没有成功,给我一天时间,我将尝试此代码并让您使用know@AshutoshKumar你真是太好了。如果您有任何问题,请随时与我联系。如果它对您有用,您可以接受它作为答案,它将帮助更多的论坛用户。
public ActionResult RedisCache()
{
    ViewBag.Message = "A simple example with Azure Cache for Redis on ASP.NET.";
    var lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
    {
        string cacheConnection = _configuration.GetSection("CacheConnection").Value;
            return ConnectionMultiplexer.Connect(cacheConnection);
    });


    // Connection refers to a property that returns a ConnectionMultiplexer
    // as shown in the previous example.
    IDatabase cache = lazyConnection.Value.GetDatabase();

    // Perform cache operations using the cache object...

    string original = "Here is some data to encrypt!";
    string guid = Guid.NewGuid().ToString();

    byte[] myRijndaelKey;
    byte[] myRijndaelIV;

    using (RijndaelManaged myRijndael = new RijndaelManaged())
    {
        myRijndael.GenerateKey();
        myRijndael.GenerateIV();
        myRijndaelKey = myRijndael.Key;
        myRijndaelIV = myRijndael.IV;
    }
    byte[] encrypted_original = EncryptandDecrypt.EncryptStringToBytes(original, myRijndaelKey, myRijndaelIV);

    ViewBag.command6 = original;
    ViewBag.command6Result = encrypted_original;
    //set orginal data
    cache.StringSet(guid, encrypted_original);
    //set key and iv
    cache.StringSet(guid+"Key", myRijndaelKey);
    cache.StringSet(guid+"IV", myRijndaelIV);


    //get data from redis
    byte[] get_encrypted_originalByte = (byte[])cache.StringGet(guid);

    byte[] get_Key = (byte[])cache.StringGet(guid+"Key");

    byte[] get_IV = (byte[])cache.StringGet(guid+"IV");

    string decrypted_originalString = EncryptandDecrypt.DecryptStringFromBytes(get_encrypted_originalByte, get_Key, get_IV);

    ViewBag.command7 = "Get From Redis:"+ get_encrypted_originalByte;
    ViewBag.command7Result = "decrypted data:" + decrypted_originalString;

    lazyConnection.Value.Dispose();


    return View();
}