Microsoft Cry ptoAPI 加密技术 简介 加密 API 在企业计算模型(Enterprise Computing Model)中有着重要的应用。企业计算化程度意味着人的接触更全球化,例如国际商品贸易,州际库存管理等等。在这些领域中经常要通过不安全渠道传输敏感信息—例如电传合同,通过电子邮件收发订单,及种种其它情况。使用加密API(Cryptography API),你就能够保证信息的安全性。 加密API 总览 加密服务提供者模块(Cryptography Service Provider――CSP) 当对用户的私有敏感数据提供保护时,加密API 中的函数允许应用程序以一种灵活的方式来加密或者电子签名数据。所有加密操作都由独立的模块来实施,这些模块叫作加密服务提供者(cryptographic service provider)。操作系统中已经包含了一个 CSP,名叫“Microsoft RSA Base Provider”。 每个 CSP 都对加密API 层提供一个不同的实现。一些提供强加密算法,而另一些会包含如智能卡(smartcards,智能卡是一张嵌有包含用户安全信息芯片的塑料卡片)之类的硬件部件。另外,一些 CSP 可能会直接与用户交互,如使用用户的签名私鈅进行数据签名时。 应用程序不要使用依赖于特定 CSP 的属性。例如,“Microsoft RSA Base Provider” 目前使用40 位的会话密鈅(session keys)和 512 位的公鈅(public keys )。当程序维护这些的时候,要小心的不要假定需要使用多大的内存去存储它们。另外,当用户在系统中安装一个不同的CSP 后,程序很可能出错。你要努力使写出的程序尽可能的well-behaved and flexible(行为良好且易扩展)。 密鈅库 每个 CSP 都有一个密鈅库(key database),里面存储着由 CSP 保存的算法密鈅。每个密鈅库都包含一个或多个密鈅容器(key container), 每个容器都包含所有属于特定用户(或使用加密API 的客户端程序)的密鈅对。每个密鈅容器都被赋与一个唯一的名字,这个名字是程序要获得此容器句柄时传给函数 CryptAcquireContext 的参数。 加密 当进行数据加密时,明文消息(plain-text message)在被编码后会看起来象完全随机的二进制数据,以至于没有密鈅就很难将其转化为原来的消息。本文中使用如下定义: 消息(Message):指任何数据块。消息可以是 ASCII 文本,一个数据库文件或者任何你要安全存储或者传输的数据。 明文(Plain text):指没有被加密的数据。 密文(Cipher text):指被加密过的数据。 一旦消息被加...