zoukankan      html  css  js  c++  java
  • Win 8 加密解密操作,运行时保存值(Session)

        今天主要学习了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功能,当程序退出时,值消失。只有在运行时才保存值。 

    作者:Work Hard Work Smart
    出处:http://www.cnblogs.com/linlf03/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    VS2012 professional和VS2012 Ultimate的区别
    ConcurrentDictionary和Dictionary
    ConcurrentDictionary的ToDictionary
    AutoResetEvent
    查看局域网内某个ip的mac地址
    斗争程序猿(三十八)——历史朝代大学(两)——我与数据库的故事
    Windowsport80解决方案被占用
    unity3d 各功能的运行秩序,打回来,订购,的次数
    蜘蛛爱上你的网站
    Java线(一个):线程安全的和不安全
  • 原文地址:https://www.cnblogs.com/linlf03/p/2735922.html
Copyright © 2011-2022 走看看