silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

[索引页] [源码下载] 稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密 作者:webabcd 介绍 Silverlight 2.0 调用 WCF 服务,对客户端与服务端传输的消息做加密         在 Visual studio 2008 中使用"添加服务引用"会自动生成代理类。只支持BasichttpBinding 在线DEMO http://w@H_772_5@
[索引页]
[源码下载]


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务,对传输信息做加密


作者:webabcd


介绍
Silverlight 2.0 调用 WCF 服务,对客户端与服务端传输的消息做加密    
    在 Visual studio 2008 中使用"添加服务引用"会自动生成代理类。只@L_675_9@BasichttpBinding


在线DEMO
http://www.voidcn.com/article/p-ounmxjds-tq.html


示例
clientaccesspolicy.xml
<? xml version ="1.0" encoding ="utf-8" ?>
< access-policy >
         < cross-domain-access >
                 < policy >
                         < allow-from http-request-headers ="*" >
                                 < domain uri ="*" />
                         </ allow-from >
                         < grant-to >
                                 < resource path ="/" include-subpaths ="true" />
                         </ grant-to >
                 </ policy >
         </ cross-domain-access >
</ access-policy >
<!--
System.Net 命名空间 和 System.Net.sockets 命名空间的跨域调用,需要在目标域的根目录下配置策略文件
Image 控件 和 MediaElement 控件所访问的跨域地址,不受策略文件的限制
http 调用 仅@L_675_9@ GET 和 POST ,只有 200(确定) 和 404(未找到) 状态代码可用
同域:同一子域、协议和端口。不符合以上任一条件则为跨域
Silverlight 与 http/httpS 的所有通信均为异步

关于策略文件详见文档
-->
 
 
1、调用 WCF 服务
WCFservice.cs(WCF 服务)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Linq;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Runtime.serialization;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.serviceModel;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.serviceModel.Activation;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Collections.Generic;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Text;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Security.Cryptography;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.IO;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


/// <sumMary>
/// 提供 WCF 服务的类
/// </sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

[serviceContract]

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

[AspNetCompatibilityrequirements(requirementsMode = AspNetCompatibilityrequirementsMode.Allowed)]

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

public class WCFservice

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

{

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// <sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// 返回指定的 User 对象(用于演示 Silverlight 调用 WCF 服务)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// </sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// <param name="name">名字</param>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// <returns></returns>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        [OperationContract]

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         public User GetUser( String Name)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 return new User { Name = name,DayOfBirth = new datetiR_248_11845@e(1980,2,14) };

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

}
 
WCF.xaml
<UserControl x:Class="Silverlight20.Communication.WCF"
        xmlns="http://scheR_248_11845@as.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://scheR_248_11845@as.microsoft.com/winfx/2006/xaml">
        <StackPanel HorizontalAlignment="Left" Margin="5">
        
                <TextBlock x:Name="lblMsg" />
        
        </StackPanel>
</UserControl>
 
WCF.xaml.cs

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Collections.Generic;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Linq;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Net;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Controls;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Documents;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Input;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Media;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Media.Animation;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Shapes;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using Silverlight20.WCFserviceReference;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Threading;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.serviceModel;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

namespace Silverlight20.Communication

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

{

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         public partial class WCF : UserControl

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                SynchronizationContext _syncContext;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 /// <sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 /// 演示 Silverlight 调用 WCF 服务

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 /// </sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 public WCF()

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        initializeComponent();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 代理的配置信息在配置文件中,UI线程上的异步调用

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        Demo();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 代理的配置信息在程序中指定,UI线程上的异步调用

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        Demo2();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 后台线程(非UI线程)上的异步调用

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        Demo3();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 void Demo()

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         /*                            

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * 服务名Client - 系统自动生成的代理类

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         *         方法名Completed - 调用指定的方法完成后所触发的事件

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         *         方法名Async(参数1,参数2,object 用户标识) - 异步调用指定的方法

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         *         Abort() - 取消调用

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         */

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        WCFserviceClient client = new WCFserviceClient();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        client.GetUserCompleted += new EventHandler<GetUserCompletedEventArgs>(client_GetUserCompleted);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        client.GetUserAsync( "webabcd");

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 void Demo2()

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         /*

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * 服务名Client - 其构造函数可以动态地指定代理的配置信息(Silverlight 2.0 调用 WCF 只@L_675_9@ BasichttpBinding)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         */

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        WCFserviceClient client = new WCFserviceClient( new BasichttpBinding(),new EndpointAddress( "http://localhost:3036/WCFservice.svc"));

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        client.GetUserCompleted += new EventHandler<GetUserCompletedEventArgs>(client_GetUserCompleted);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        client.GetUserAsync("webabcd2");

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                void client_GetUserCompleted(object sender,GetUserCompletedEventArgs E)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        /*

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * 方法名CompletedEventArgs.Error - 该异步操作期间是否发生了错误

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * 方法名CompletedEventArgs.Result - 异步操作返回的结果。本例为 User 类型

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * 方法名CompletedEventArgS.UserState - 用户标识

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         */

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        if (e.Error != null)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                lblMsg.Text += e.Error.ToString() + "\r\n";

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                return;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        if (e.Cancelled != true)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                OutputResult(e.Result);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                void Demo3()

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        // UI 线程

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        _syncContext = SynchronizationContext.Current;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        /*

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * ChAnnelFactory<T>.CreateChAnnel() - 创建 T 类型的信道

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * 服务名.begin方法名() - 后台线程上异步调用指定方法(最后一个参数为 代理对象)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         */

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        WCFservice client = new ChAnnelFactory<WCFservice>(new BasichttpBinding(),new EndpointAddress("http://localhost:3036/WCFservice.svc")).CreateChAnnel();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        client.beginGetUser("webabcd3",new AsyncCallBACk(ResponseCallBACk),client);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                private void ResponseCallBACk(IAsyncResult result)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        WCFservice client = result.AsyncState as WCFservice;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        // 服务名.End方法名() - 获取后台线程(非UI线程)上异步调用的结果

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        User user = client.EndGetUser(result);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        // 调用 UI 线程

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        _syncContext.Post(GetResponse,user);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                private void GetResponse(object statE)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        OutputResult(state as User);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                /// <sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                /// 输出异步调用 WCF 服务的方法后返回的结果

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                /// </sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                /// <param name="user"></param>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                void OutputResult(User user)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        lblMsg.Text += String.Format("姓名:{0};生日:{1}\r\n",

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                user.Name,

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                user.DayOfBirth.ToString("yyyy-MM-dd"));

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

}
 
 
2、对客户端与服务端传输的消息做加密
WCFservice.cs(WCF 服务)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Linq;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Runtime.serialization;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.serviceModel;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.serviceModel.Activation;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Collections.Generic;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Text;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Security.Cryptography;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.IO;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


/// <sumMary>
/// 提供 WCF 服务的类
/// </sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

[serviceContract]

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

[AspNetCompatibilityrequirements(requirementsMode = AspNetCompatibilityrequirementsMode.Allowed)]

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

public class WCFservice

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

{

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// <sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// 返回指定的 User 对象(用于演示传输信息的加密/解密)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// </sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// <param name="name"></param>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// <returns></returns>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        [OperationContract]

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         public User GetUserByCryptography( String Name)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 return new User { Name = Decrypt(Name),DayOfBirth = new datetiR_248_11845@e(1980,14) };

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// <sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// 解密数据

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// </sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// <param name="input">加密后的字符串</param>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         /// <returns>加密前的字符串</returns>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         public String Decrypt( String input)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 // 盐值(与加密时设置的值一致)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 String saltValue = "saltValue";

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 // 密码值(与加密时设置的值一致)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 String pwdValue = "pwdValue";

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 byte[] encryptBytes = Convert.FromBase64String(input);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 byte[] salt = Encoding.UTF8.GetBytes(saltvalue);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                Aesmanaged aes = new Aesmanaged();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(pwdValue,salt);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                aes.blockSize = aes.LegalBlockSizes[0].MaxSize;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                aes.KeySize = aes.LegalKeySizes[0].MaxSize;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                aes.Key = rfc.GetBytes(aes.KeySize / 8);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                aes.IV = rfc.GetBytes(aes.blockSize / 8);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 // 用当前的 Key 属性和初始化向量 IV 创建对称解密器对象

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                ICryptoTransform decryptTransform = aes.CreateDecryptor();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 // 解密后的输出

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                MemoryStream decryptStream = new MemoryStream();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 // 将解密后的目标流(decryptStream)与解密转换(decryptTransform)相连接

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                CryptoStream decryptor = new CryptoStream(decryptStream,decryptTransform,CryptoStreAMMode.WritE);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 // 将一个字节序列写入当前 CryptoStream (完成解密的过程)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                decryptor.Write(encryptBytes,encryptBytes.Length);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                decryptor.Close();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 // 将解密后所得到的流转换为字符串

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 byte[] decryptBytes = decryptStream.ToArray();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 String decryptedString = UTF8Encoding.UTF8.GetString(decryptBytes,decryptBytes.Length);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 return decryptedString;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

}
 
Cryptography.xaml
<UserControl x:Class="Silverlight20.Communication.Cryptography"
        xmlns="http://scheR_248_11845@as.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://scheR_248_11845@as.microsoft.com/winfx/2006/xaml">
        <StackPanel HorizontalAlignment="Left" Margin="5">
        
                <TextBlock x:Name="lblMsg" />
        
        </StackPanel>
</UserControl>
 
Cryptography.xaml.cs

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Collections.Generic;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Linq;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Net;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Controls;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Documents;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Input;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Media;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Media.Animation;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Windows.Shapes;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using Silverlight20.WCFserviceReference;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Text;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.Security.Cryptography;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

using System.IO;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

namespace Silverlight20.Communication

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

{

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

         public partial class Cryptography : UserControl

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 public Cryptography()

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        initializeComponent();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        Demo();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 void Demo()

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        WCFserviceClient client = new WCFserviceClient();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        client.GetUserByCryptographyCompleted+= new EventHandler<GetUserByCryptographyCompletedEventArgs>(client_GetUserByCryptographyCompleted);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        client.GetUserByCryptographyAsync(Encrypt( "webabcd"));

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 void client_GetUserByCryptographyCompleted( object sender,GetUserByCryptographyCompletedEventArgs E)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         if (e.Error != null)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                lblMsg.Text += e.Error.ToString() + "\r\n";

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                 return;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         if (e.Cancelled != true)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                lblMsg.Text += String.Format( "姓名:{0};生日:{1}\r\n",

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                        e.Result.Name,

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                                        e.Result.DayOfBirth.ToString( "yyyy-MM-dd"));

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 /// <sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 /// 加密数据

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 /// </sumMary>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 /// <param name="input">加密前的字符串</param>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 /// <returns>加密后的字符串</returns>

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                 private String Encrypt( String input)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                {

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 盐值

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         String saltValue = "saltValue";

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 密码值

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         String pwdValue = "pwdValue";

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         byte[] data = UTF8Encoding.UTF8.GetBytes(input);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         byte[] salt = UTF8Encoding.UTF8.GetBytes(saltvalue);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // Aesmanaged - 高级加密标准(AES) 对称算法的管理类

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        Aesmanaged aes = new Aesmanaged();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // Rfc2898DeriveBytes - 通过使用基于 HMACSHA1 的伪随机生成器,实现基于密码的密钥派生功能 (PBKDF2 - 一种基于密码的密钥派生函数)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 通过 密码 和 salt 派生密钥

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(pwdValue,salt);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         /*

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * Aesmanaged.blockSize - 加密操作的块大小(单位:bit)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * Aesmanaged.LegalBlockSizes - 对称算法@L_675_9@的块大小(单位:bit)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * Aesmanaged.KeySize - 对称算法的密钥大小(单位:bit)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * Aesmanaged.LegalKeySizes - 对称算法@L_675_9@的密钥大小(单位:bit)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * Aesmanaged.Key - 对称算法的密钥

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * Aesmanaged.IV - 对称算法的密钥大小

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         * Rfc2898DeriveBytes.GetBytes(int 需要生成的伪随机密钥字节数) - 生成密钥

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         */

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        aes.blockSize = aes.LegalBlockSizes[0].MaxSize;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        aes.KeySize = aes.LegalKeySizes[0].MaxSize;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        aes.Key = rfc.GetBytes(aes.KeySize / 8);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        aes.IV = rfc.GetBytes(aes.blockSize / 8);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 用当前的 Key 属性和初始化向量 IV 创建对称加密器对象

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        ICryptoTransform encryptTransform = aes.CreateEncryptor();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 加密后的输出

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        MemoryStream encryptStream = new MemoryStream();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 将加密后的目标流(encryptStream)与加密转换(encryptTransform)相连接

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        CryptoStream encryptor = new CryptoStream(encryptStream,encryptTransform,CryptoStreAMMode.WritE);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 将一个字节序列写入当前 CryptoStream (完成加密的过程)

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        encryptor.Write(data,data.Length);

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                        encryptor.Close();

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         // 将加密后所得到的流转换成字节数组,再用Base64编码将其转换为字符串

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         String encryptedString = Convert.ToBase64String(encryptStream.ToArray());

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密


稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                         return encryptedString;

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

                }                

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

        }

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密

}
 
 

大佬总结

以上是大佬教程为你收集整理的稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密全部内容,希望文章能够帮你解决稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。