このコードは、Microsoftストアで公開されていないアプリでも正常に動作します。しかし、公開後に「パディングが無効であり、削除できません」というエラーが表示されます。 キーと塩のすべてのIVがチェックされ、同じです。間違っていると助けてください。または、他のコードを提案する。それは携帯電話8.1とWindows Mobile 10.0アプリです。 ソースファイルがSDカードにあり、宛先がアプリケーションのローカルフォルダにあります。Visual Studioアプリケーションが公開前に公開されていて公開前に公開されていない
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());
}