Visual Studio应用程序在发布之前工作,而不是在发布之后

时间:2016-04-25 14:57:32

标签: c# windows encryption visual-studio-2013 aes

当应用程序未在Microsoft商店发布时,此代码运行良好。但是在发布后给出“填充无效且无法删除”错误。 检查所有的密钥和盐IV并且是相同的。有什么不对请帮忙。或者建议其他代码。它是手机8.1和Windows Mobile 10.0应用程序。 源文件位于SD卡中,目标位于应用程序的本地文件夹中。

int Iterations = 1000;
AesManaged aes = new AesManaged();
aes.BlockSize = aes.LegalBlockSizes[0].MaxSize;
aes.KeySize = aes.LegalKeySizes[0].MaxSize;
byte[] salt = GetBytes(SaltKey);
Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(SKey, salt, Iterations);
aes.Key = key.GetBytes(aes.KeySize / 8);
aes.IV = key.GetBytes(aes.BlockSize / 8);  

ICryptoTransform transform = aes.CreateDecryptor(aes.Key, aes.IV);
try
{
    using (FileStream dest = new FileStream(destFilename, FileMode.CreateNew, FileAccess.Write, FileShare.None))
    {
        using (CryptoStream cryptoStream = new CryptoStream(dest, transform, CryptoStreamMode.Write))
        {
            using (FileStream source = new FileStream(srcFilename, FileMode.Open, FileAccess.Read, FileShare.Read))
            {

                source.CopyTo(cryptoStream);                            

            }

        }
    }
}
catch (Exception exception)
{
    //return "Decryption failed : " + exception.Message.ToString();
    System.Diagnostics.Debug.WriteLine("Decryption failed : " + exception.Message.ToString());
    //throw new ApplicationException("Decryption failed.", exception);
    MessageBox.Show("Decryption failed : " + exception.Message.ToString());
}

1 个答案:

答案 0 :(得分:0)

问题在于从SD卡访问srcfile。访问被拒绝,文件流失败,无法解密任何数据。因此,它解密空数据并给出填充错误。我明白了,因为我尝试通过文件流复制复制文件然后解密。复制文件失败并提供访问被拒绝错误。任何人都可以帮助解决为什么访问SD卡中的文件路径失败。错误是https://www.microsoft.com/getsilverlight/DllResourceIDs/Default.aspx?Version=4.0.30508.0&File=mscorlib.dll&Key=UnauthorizedAccess_IODenied_Path。 该应用程序在发布之前访问SD卡文件。包含所有权限。