今天主要学习了Win 8 加密解密操作,运行时保存值(Session)的功能,我这里只是学习写了一些简单的东西,
并记录下,方便自己以后再次学习。希望园子里的朋友能多多指教,我也是一名Win 8 初学者。
一、加密解密操作,要用到Windows.Security.Cryptography.DataProtection命名空间下的DataProtectionProvider类,
Win 8 加密解密操作关键代码:inputFile是要未加密的文件,outputFile是加密后的文件(保存/生成出来的新文件)。
private async Task EncryptAsync(IStorageFile inputFile, IStorageFile outputFile) { if (inputFile == null || outputFile == null) return; try { IRandomAccessStream inputstr = await inputFile.OpenAsync(FileAccessMode.Read); IRandomAccessStream outputstr = await outputFile.OpenAsync(FileAccessMode.ReadWrite); DataProtectionProvider dp = new DataProtectionProvider("LOCAL=user"); await dp.ProtectStreamAsync(inputstr, outputstr); inputFile = null; outputFile = null; } catch (Exception) { } }
inputFile是要已加密的文件,outputFile是空文件(保存/生成出来的新文件)。
private async Task DecipheringAsync(IStorageFile inputFile, IStorageFile outputFile) { if (inputFile == null || outputFile == null) return; try { IRandomAccessStream inputstr = await inputFile.OpenAsync(FileAccessMode.Read); IRandomAccessStream outputstr = await outputFile.OpenAsync(FileAccessMode.ReadWrite); DataProtectionProvider dp = new DataProtectionProvider(); await dp.UnprotectStreamAsync(inputstr, outputstr); inputFile = null; outputFile = null; } catch (Exception){} }
二、运行时数据的保存,类似于Asp.net的Session功能。
1、设计界面:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Button Content="OK" HorizontalAlignment="Left" Margin="535,65,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.92,0.489" Click="OK_Click"/> <TextBox x:Name="sessionTxt" HorizontalAlignment="Left" Margin="277,65,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="234"/> <TextBlock HorizontalAlignment="Left" Margin="0,65,0,0" TextWrapping="Wrap" Text="请输入Session的值" FontSize="30" VerticalAlignment="Top"/> <Frame x:Name="curFrame" Margin="10,135,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> </Grid>
2、关键代码:使用Windows.ApplicationModel.Core.CoreApplication类下的Properties保存值。 然后Frame指向SecondPage.xaml页。
private void OK_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(sessionTxt.Text) == false) { Windows.ApplicationModel.Core.CoreApplication.Properties["firstText"] = sessionTxt.Text; curFrame.Navigate(typeof(SecondPage)); } }
3、获取保存的值。在SecondPage.xaml页中获取保存的值。
private void GetSessionValue() { if (Windows.ApplicationModel.Core.CoreApplication.Properties.ContainsKey("firstText")) { SessionTxt.Text = Windows.ApplicationModel.Core.CoreApplication.Properties["firstText"].ToString(); } }
效果图:
保存值总结:保存值类似于Asp.net的session功能,当程序退出时,值消失。只有在运行时才保存值。