成长空间

MiLife

常用链接

统计

积分与排名

Automation Testing Development

最新评论

#

http://www.cnblogs.com/tonyqus/archive/2006/11/30/577097.html

posted @ 2007-09-25 14:40 Picasso 阅读(158) | 评论 (0)编辑 收藏

Tape information

原来百科全书这种东西也总结了,收纳
http://en.wikipedia.org/wiki/Linear_Tape-Open

posted @ 2007-09-05 17:33 Picasso 阅读(176) | 评论 (0)编辑 收藏

SSL的证书验证

SSL协议与数字证书原理 1楼

SSL 协议的握手和通讯

  为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议。SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:
  ① 客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
  ② 服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
  ③ 客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
  ④ 用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。
  ⑤ 如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。
  ⑥ 如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的 CA 是否可靠,发行 CA 的公钥能否正确解开客户证书的发行 CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。
  ⑦ 服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于 SSL 协议的安全数据通讯的加解密通讯。同时在 SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。
  ⑧ 客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
  ⑨ 服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
  ⑩ SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。


  双向认证 SSL 协议的具体过程
   ① 浏览器发送一个连接请求给安全服务器。
  ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。
  ③ 客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。
   ④ 接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。
   ⑤ 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。
   ⑥ 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。
   ⑦ 服务器从客户发送过来的密码方案中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知浏览器。
   ⑧ 浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。
   ⑨ 服务器接收到浏览器送过来的消息,用自己的私钥解密,获得通话密钥。
   ⑩ 服务器、浏览器接下来的通讯都是用对称密码方案,对称密钥是加过密的。
   上面所述的是双向认证 SSL 协议的具体通讯过程,这种情况要求服务器和用户双方都有证书。单向认证 SSL 协议不需要客户拥有 CA 证书,具体的过程相对于上面的步骤,只需将服务器端验证客户证书的过程去掉,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户的是没有加过密的(这并不影响 SSL 过程的安全性)密码方案。 这样,双方具体的通讯内容,就是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用 128 位加密通讯的原因。



证 书 各 部 分 的 含 义
Version 证书版本号,不同版本的证书格式不同
Serial Number 序列号,同一身份验证机构签发的证书序列号唯一
Algorithm Identifier 签名算法,包括必要的参数 Issuer 身份验证机构的标识信息
Period of Validity 有效期
Subject 证书持有人的标识信息
Subject’s Public Key 证书持有人的公钥
Signature 身份验证机构对证书的签名


  证书的格式  认证中心所发放的证书均遵循 X.509 V3 标准,其基本格式如下:

证书版本号(Certificate Format Version) 含义:用来指定证书格式采用的 X.509 版本号。
证书序列号(Certificate Serial Number) 含义:用来指定证书的唯一序列号,以标识 CA 发出的所有公钥证书。
签名(Signature) 算法标识(Algorithm Identifier) 含义:用来指定 CA 签发证书所用的签名算法。
签发此证书的 CA 名称(Issuer ) 含义:用来指定签发证书的 CA 的 X.500 唯一名称(DN, Distinguished Name)。
证书有效期(Validity Period) 起始日期(notBefore) 终止日期(notAfter) 含义:用来指定证书起始日期和终止日期。
用户名称(Subject) 含义:用来指定证书用户的 X.500 唯一名称(DN,Distinguished Name)。
用户公钥信息(Subject Public Key Information) 算法(algorithm) 算法标识(Algorithm Identifier) 用户公钥(subject Public Key) 含义:用来标识公钥使用的算法,并包含公钥本身。
证书扩充部分(扩展域)(Extensions) 含义:用来指定额外信息。 
X.509 V3 证书的扩充部分(扩展域)及实现方法如下: CA 的公钥标识(Authority Key Identifier) 公钥标识(SET 未使用)(Key Identifier) 签发证书者证书的签发者的甄别名(Certificate Issuer) 签发证书者证书的序列号(Certificate Serial Number)

 X.509 V3 证书的扩充部分(扩展域)及实现CA 的公钥标识(Authority Key Identifier) 公钥标识(SET 未使用)(Key Identifier) 签发证书者证书的签发者的甄别名(Certificat签发证书者证书的序列号(Certificate Serial N含义:CA 签名证书所用的密钥对的唯一标识用户的公钥标识(Subject Key Identifier) 含义:用来标识与证书中公钥相关的特定密钥进行解密。 证书中的公钥用途(Key Usage) 含义:用来指定公钥用途。
用户的私钥有效期(Private Key Usage Period) 起始日期(Note Before) 终止日期(Note After) 含义:用来指定用户签名私钥的起始日期和终止日期。 CA 承认的证书政策列表(Certificate Policies) 含义:用来指定用户证书所适用的政策,证书政策可由对象标识符表示。 用户的代用名(Substitutional Name) 含义:用来指定用户的代用名。 CA 的代用名(Issuer Alt Name) 含义:用来指定 CA 的代用名。 基本制约(Basic Constraints) 含义:用来表明证书用户是最终用户还是 CA。 在 SET 系统中有一些私有扩充部分(扩展域)Hashed Root Key 含义:只在根证书中使用,用于证书更新时进行回溯。 证书类型(Certificate Type) 含义:用来区别不同的实体。该项是必选的。 商户数据(Merchant Data) 含义:包含支付网关需要的所有商户信息。 持卡人证书需求(Card Cert Required) 含义:显示支付网关是否支持与没有证书的持卡人进行交易。 SET 扩展(SETExtensions) 含义:列出支付网关支持的支付命令的 SET 信息扩展。 CRL 数据定义版本(Version) 含义:显示 CRL 的版本号。
CRL 的签发者(Issuer) 含义:指明签发 CRL 的 CA 的甄别名。 CRL 发布时间(this Update) 预计下一个 CRL 更新时间(Next Update) 撤销证书信息目录(Revoked Certificates) CRL 扩展(CRL Extension) CA 的公钥标识(Authority Key Identifier) CRL 号(CRL Number)

posted @ 2007-09-04 18:05 Picasso 阅读(3701) | 评论 (0)编辑 收藏

BQ中的DST 处理

最近BQ关于时间处理出问题, 是因为时间的计算上没有处理好DST,以前做计费的时候老碰到,还做了专题,疏忽了,微软倒有详细的解释,抄录如下:
http://support.microsoft.com/kb/932955/zh-cn

posted @ 2007-09-04 14:50 Picasso 阅读(195) | 评论 (0)编辑 收藏

有志之人立志常,无志之人常立志

偶尔听到的

posted @ 2007-08-30 20:27 Picasso 阅读(149) | 评论 (0)编辑 收藏

WPF automation

产品的GUI Automation准备:
1.书籍:
http://www.cnblogs.com/tonyqus/archive/2007/08/01/835071.html

这本书是由Adam Nathan和Daniel Lehenbauer写的,这两个人都是WPF Team的,而且都是核心开发工程师,技术级别自然是很高的。全书共有600页左右,原版书采用全彩印刷,于2007年初由SAMS出版社出版发行。作为一本Unleashed级别的书,自然要适合初、中、高各个层次的开发者。

本书共分为6个部分,其实严格意义上讲是5部分,因为第6部分是附录。让我们看看这五部分分别讲了什么:
第一部分 背景

这部分主要讲WPF的由来、为什么要使用WPF,以及一些WPF的基础知识。总的来说,这一部分是为接下来的几个部分作铺垫的,可以算是打基础。对于初学者来说,看完这一部分你就可以基本了解WPF是什么、为什么要学习WPF以及WPF的发展方向,说白了就是让你找到学习的方向。我个人对于这种写作风格十分喜欢,一开始就告诉你这个技术的用途,而且用了大篇幅来讲一些实际的例子,让读者可以有一个感性的认识。

第二部分 构建一个WPF应用程序

顾名思义,这部分讲的是构建一个WPF应用程序所需要的知识。但这一部分要比上一部分中的基础知识深入多了,讲的都是很实用的东西,直接可以在开发中使用,比如控件、变换等,当然这一部分主要还是着重于打基础,但与你所想象的不同,它并不是一步一步教你构建一个类似于Hello World的程序,而是把涉及的一些概念讲得比较深入,作者似乎是想让读者在充分理解的基础上创建第一个WPF应用程序。

第三部分为专业开发人员设计的功能

这部分算是第二部分的提高篇,讲到了资源、数据绑定、样式、模板等,这些可都是做高端开发所必须的,但由于是一些相对较难理解的东西,所以作者把它放在这部分里一切讲解。

第四部分 富媒体使你的程序领先于时代

这部分围绕着富媒体展开,这也是WPF真正牛的地方,比如说2D和3D功能、动画、视频、音频等,WPF的最大优点就在于它把使用这些富媒体的门槛降低了,所以如果你想真正开发出科幻般的应用程序的话,这一部分自然是必须看的。

第五部分 高级主题

这部分相对于前几部分有相当的难度,所以才叫高级主题!我个人觉得这一章完全是为高级开发人员准备的,其中涉及的内容都是关于定制控件开发、互操作性之类的,要看这一章你必须对前面的部分有充分的理解。

这本书的写作风格也很有特点,其中有大量的提示、警告和深入挖掘。所谓提示,就是一些技巧性的东西,根据正文讲的东西展开;所谓警告,则是告诉我们哪些东西可以用,哪些不可以用,这一技术有什么技巧;所谓深入挖掘,就是对正文所提到的东西深入讲解一番,可以有效帮助我们加深对一些知识点的理解。

大家可以去http://adamnathan.net/wpf/ 下载这本书的代码,不过貌似没有找到勘误信息,可能作者对这本书的质量比较有自信吧。

这几年软件开发的重点在Web,但Charles Petzold依然固守在Client端的GUI程序设计,我原本以为,他会渐渐没落,事实上,《Programming Microsoft Windows with C#》的销售也不能算很好。但是随着WPF技术的出现,Charles Petzold的这本《Applications = Code + Markup》将会让他再度成为重要的书籍作者。

这是一本「学习用书」而非「参考用书」。尽管如此,本书的读者必须熟悉C#语言并具备.NET Framework的经验,没有经验的读者,可以阅读Charles Petzold写的在线免费书籍《.NET Book Zero: What the C or C++ Programmer Needs to Know about C# and the .NET Framework》。

Applications = Code + Markup》介绍如何使用WPF编写微软Windows平台的程序。WPF的程序可以是一般的独立Windows应用(这样的程序现在常称为 Client应用),或者是分布式(Distributed)应用的前端(也就是RIARich Internet Application),未来也可能利用WPF/E取代一部分的Web技术,例如:ASP.NETWPF被认为是Windows Vista的主要API,但是也可以用在已安装.NET 3.0Windows XP/SP2Windows Server 2003

WPF
其实包含「两个」互相关连的程序设计接口。你可以利用C#(或其它.NET语言)编写WPF程序。WPF也具备一个让人兴奋的XML语言, 称为XAML,甚至可以只用XAML开发某些应用。但是一般来说,你会同时利用程序代码(Code)和标记(Makeup)一同开发出你的应用。现在,你应 该能够体会,为什么这本书的书名为《Application = Code + Markup》。在WPF的观念中,我们使用XAMLMarkup)定义使用者接口视觉的部分(包括图形和动画),然后写程序代码(Code)处理使用者 的输入。

WPF
支持两种非常不同的程序设计接口,每个程序设计员都应该要对于WPFCode部分建立稳固的根基,写起Markup的时候才不会遇到障 碍。因此,本书分成两个部分,各约半本书。第一部分先引导读者如何利用C#写出整个WPF程序(完全不用到XAML),第二部分再介绍XAML
二部分将焦点转移到XAML。展示如何只用XAML建立小型的应用,以及如何结合XAMLC#以建立更大型、更复杂的应用。因为XAML 是用来建立应用的视觉部分,所以本书大部分和图形相关的内容,会放在第二部分。XAML的档案大多数是用工具所产生出来的。然而,我们还是有必要具备「亲自动手编写XAML」的能力,本书试图要教我们这么做。

再过几年Windows Forms也会被淘汰,而WPF才是未来的主流。虽然WPF尚未像Windows Forms提供这么多控件和标准对话框,但是未来却很有发展潜力。特别是,如果你需要做很多客制化控件和绘图,WPF会是你需要的。如果你想好好地学 习WPFCharles Petzold写的这本《Applications = Code + Markup》,不会让你失望的。
2. WPF->net Framework里的UIAutomation 需要了解.
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1634518&SiteID=1
http://msdn.microsoft.com/msdnmag/issues/07/03/Bugslayer/
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=769221&SiteID=1







posted @ 2007-08-08 15:48 Picasso 阅读(660) | 评论 (0)编辑 收藏

批处理控制VMWare虚拟机


http://myblog.iweb.net.cn/read.php?66
VMWare 确实是好东西,不过安装之后会增加四个自动启动的服务以及两个虚拟的网络连接。我是比较讨厌这种没事就占着系统资源的东西,何况也不是经常要用着 VMWare ,所以写了个批处理脚本来自动启动/关闭 VMWare 虚拟机以及相关的服务和网络连接。
完整批处理文件内容如下:


1 @echo On  
2 @PROMPT [VMWareController]#  
3  
4 @if "%1" == "" goto Help  
5 @if "%1" == "help" goto Help  
6 @if "%1" == "/?" goto Help  
7  
8 @SET oprType=%1  
9 @SET netOpr=%oprType%  
10  
11 @if "%oprType%" == "start" @SET netOpr=enable  
12 @if "%oprType%" == "stop" @SET netOpr=disable  
13  
14 @SET vmxFile=%2  
15 @Rem 如果没有提供第二个参数vmx full path,将尝试使用这里设定的缺省虚拟机  
16 @Rem 根据需要把这个文件修改为实际希望启动的vmx文件  
17 @if "%vmxFile%" == "" @SET vmxFile=D:\VMWare\Red Hat Enterprise Linux 3.vmx  
18  
19 @Rem VMWare的安装目录,根据需要进行修改  
20 @SET vmwareFolder=E:\AppTool\VMWare  
21  
22 @Rem 把VMWare相关的四个服务设置为手动  
23 sc config VMAuthdService start= demand  
24 sc config VMnetDHCP start= demand  
25 sc config "VMware NAT Service" start= demand  
26 sc config vmount2 start= demand  
27  
28 @Rem 启动/停止VMWare相关的四个服务  
29 net %oprType% "VMware Authorization Service"  
30 net %oprType% "VMware DHCP Service"  
31 net %oprType% "VMware NAT Service"  
32 net %oprType% "VMware Virtual Mount Manager Extended"  
33  
34 @Rem 这里使用通配符来停用/启用所有vmnet相关的网络连接  
35 devcon %netOpr% *vmnet*  
36  
37 @Rem 使用vmrun来运行指定的虚拟机  
38 "%vmwareFolder%\vmrun" %oprType% "%vmxFile%"    
39  
40 @goto EndMission  
41  
42 :Help  
43 @echo 自动启动/停止指定的 VMWare 虚拟机以及相关的服务和网络连接  
44 @echo 需要 devcon 工具来控制网络连接。工具下载地址:  
45 @echo http://support.microsoft.com/kb/311272/zh-cn  
46 @echo 命令行参数:  
47 @echo %0 [start^|stop] ^  
48 @echo ^为缺省启动的虚拟机配置文件  
49 @pause  
50 goto EndMission  
51  
52 :EndMission  
view plain | print | copy to clipboard | ?
@echo On
@PROMPT [VMWareController]#

@if "%1" == "" goto Help
@if "%1" == "help" goto Help
@if "%1" == "/?" goto Help

@SET oprType=%1
@SET netOpr=%oprType%

@if "%oprType%" == "start" @SET netOpr=enable
@if "%oprType%" == "stop" @SET netOpr=disable

@SET vmxFile=%2
@Rem 如果没有提供第二个参数vmx full path,将尝试使用这里设定的缺省虚拟机
@Rem 根据需要把这个文件修改为实际希望启动的vmx文件
@if "%vmxFile%" == "" @SET vmxFile=D:\VMWare\Red Hat Enterprise Linux 3.vmx

@Rem VMWare的安装目录,根据需要进行修改
@SET vmwareFolder=E:\AppTool\VMWare

@Rem 把VMWare相关的四个服务设置为手动
sc config VMAuthdService start= demand
sc config VMnetDHCP start= demand
sc config "VMware NAT Service" start= demand
sc config vmount2 start= demand

@Rem 启动/停止VMWare相关的四个服务
net %oprType% "VMware Authorization Service"
net %oprType% "VMware DHCP Service"
net %oprType% "VMware NAT Service"
net %oprType% "VMware Virtual Mount Manager Extended"

@Rem 这里使用通配符来停用/启用所有vmnet相关的网络连接
devcon %netOpr% *vmnet*

@Rem 使用vmrun来运行指定的虚拟机
"%vmwareFolder%\vmrun" %oprType% "%vmxFile%"

@goto EndMission

:Help
@echo 自动启动/停止指定的 VMWare 虚拟机以及相关的服务和网络连接
@echo 需要 devcon 工具来控制网络连接。工具下载地址:
@echo http://support.microsoft.com/kb/311272/zh-cn
@echo 命令行参数:
@echo %0 [start^|stop] ^
@echo ^为缺省启动的虚拟机配置文件
@pause
goto EndMission

:EndMission


  把以上代码保存为 .bat 文件,并创建两个指向该 .bat 文件的快捷方式,并分别给两个快捷方式加上 start / stop 参数(也可以再提供第二个参数来指定启动特定的虚拟机配置文件),就可以通过快捷方式直接启动/停止 VMWare 相关的虚拟机和服务。

  其中使用了 devcon 工具来控制网络连接的停用/启用,需要到微软网站下载该工具。

  注意:如果你的系统中存在其他硬件ID包含 *vmnet* 字符串的话会把所有相关的设备同时都禁用/启用。你可以在命令行下输入 devcon find *vmnet* 先检查一下是否只匹配到 VMWare 所添加的两个虚拟网络连接。

  用 vmrun 关闭虚拟机的时候作用等同于在操作界面的 Power Off 按钮。所以最好在执行批处理之前使用虚拟操作系统的 shutdown 命令先安全退出操作系统。

posted @ 2007-08-01 06:59 Picasso 阅读(1400) | 评论 (0)编辑 收藏

SOAP协议初级指南

http://www.yesky.com/229/1739729_8.shtml
http://www0.ccidnet.com/tech/app/2001/09/21/58_3322.html
http://www0.ccidnet.com/tech/app/2001/09/21/58_3321.html
http://www0.ccidnet.com/tech/app/2001/09/21/58_3320.html
http://www0.ccidnet.com/tech/app/2001/09/21/58_3319.html

posted @ 2007-07-26 11:47 Picasso 阅读(189) | 评论 (0)编辑 收藏

XML NameSpace

http://zhangjunhd.blog.51cto.com/113473/18934

posted @ 2007-07-26 11:14 Picasso 阅读(196) | 评论 (0)编辑 收藏

Single Sign on 2

Java based:
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/xiaojing/SSOprepare/SSOprepare.html


MS based:
http://www.microsoft.com/china/community/MsSpecialist/1.mspx

posted @ 2007-07-25 18:50 Picasso 阅读(165) | 评论 (0)编辑 收藏

仅列出标题
共4页: 上一页 1 2 3 4 下一页