Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windowsrt项目中的解密_C#_Windows Rt - Fatal编程技术网

C# windowsrt项目中的解密

C# windowsrt项目中的解密,c#,windows-rt,C#,Windows Rt,此代码在Windows Phone Silverlight项目中运行良好。 但这在Windows RT项目中不起作用。 其syay加密、Aes和Aes管理类缺失等。 请帮帮我,谢谢。 我真的不需要密码和盐。只需简单地获取字符串并解密即可。 public class DecryptionHelper { public static string Decrypt(string base64StringToDecrypt) { if (string.IsNullOrEm

此代码在Windows Phone Silverlight项目中运行良好。 但这在Windows RT项目中不起作用。 其syay加密、Aes和Aes管理类缺失等。 请帮帮我,谢谢。 我真的不需要密码和盐。只需简单地获取字符串并解密即可。

public class DecryptionHelper
{
    public static string Decrypt(string base64StringToDecrypt)
    {
        if (string.IsNullOrEmpty(base64StringToDecrypt))
            return string.Empty;
        //Set up the encryption objects
        using (Aes acsp = GetProvider(Encoding.UTF8.GetBytes
                                                    (Constants.EncryptionKey)))
        {
            byte[] RawBytes = Convert.FromBase64String(base64StringToDecrypt);
            ICryptoTransform ictD = acsp.CreateDecryptor();
            //RawBytes now contains original byte array, still in Encrypted state
            //Decrypt into stream
            MemoryStream msD = new MemoryStream(RawBytes, 0, RawBytes.Length);
            CryptoStream csD = new CryptoStream(msD, ictD, CryptoStreamMode.Read);
            //csD now contains original byte array, fully decrypted
            //return the content of msD as a regular string
            return (new StreamReader(csD)).ReadToEnd();
        }
    }

    private static Aes GetProvider(byte[] key)
    {
        Aes result = new AesManaged();
        result.GenerateIV();
        result.IV = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
        byte[] RealKey = GetKey(key, result);
        result.Key = RealKey;
        return result;
    }

    private static byte[] GetKey(byte[] suggestedKey, SymmetricAlgorithm p)
    {
        byte[] kRaw = suggestedKey;
        List<byte> kList = new List<byte>();
        for (int i = 0; i < p.LegalKeySizes[0].MinSize; i += 8)
        {
            kList.Add(kRaw[(i / 8) % kRaw.Length]);
        }
        byte[] k = kList.ToArray();
        return k;
    }
}
公共类DecryptionHelper
{
公共静态字符串解密(字符串base64StringToDecrypt)
{
if(string.IsNullOrEmpty(base64StringToDecrypt))
返回字符串。空;
//设置加密对象
使用(Aes acsp=GetProvider(Encoding.UTF8.GetBytes
(Constants.EncryptionKey)))
{
byte[]RawBytes=Convert.FromBase64String(base64StringToDecrypt);
ICryptoTransform ictD=acsp.CreateDecryptor();
//RawBytes现在包含原始字节数组,仍然处于加密状态
//解密成流
MemoryStream msD=新的MemoryStream(RawBytes,0,RawBytes.Length);
CryptoStream csD=新加密流(msD、ictD、CryptoStreamMode.Read);
//csD现在包含完全解密的原始字节数组
//以常规字符串形式返回msD的内容
return(newstreamreader(csD)).ReadToEnd();
}
}
专用静态Aes GetProvider(字节[]键)
{
Aes结果=新Aes管理();
result.GenerateIV();
result.IV=新字节[]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
字节[]RealKey=GetKey(key,result);
result.Key=RealKey;
返回结果;
}
私有静态字节[]GetKey(字节[]suggestedKey,对称算法p)
{
字节[]kRaw=建议的密钥;
List kList=新列表();
对于(int i=0;i
WinRT有完全不同的加密API。可能有一个包装器。您的代码有严重的加密问题。1) 键似乎是字符串,而不是正确的键。要么生成一个正确的密钥(如果需要字符串,请对其进行base64编码),要么使用KDF。2) 静脉输液器是固定的。IV的全部要点是,每种加密都不同。3) 缺少MAC支持主动攻击,包括填充预言机。