保密通讯支持库

保密通讯支持库 帮助手册20080821版 返回支持库手册 返回首页

本支持库实现在网络上保密通讯的目的。由于一些机密数据在网上传输过程中可能会被一些别有用心的人截获破坏，以致对数据的拥有者造成经济上或者是物质上的损失，这样就要求数据在网络上传输的过程中不会被他人利用破坏。本支持库的设计和实现就是为了完成在网络上保密通讯的目的，注意本支持库仅仅是完成对数据在传输的过程中的保护。理论上，在用户的私钥不公开的情况下，该通讯方式是绝对安全的，即使算法的设计者也不能做出任何破坏。本支持库使用也非常简单，在客户端和服务程序连接前，设置好相应密钥，在实际的使用过程中，用户不必关心加密解密的过程，正常发送和接收数据就可以了。为了完全理解该支持库，建议使用者查阅有关“安全套接字层(SSL)”的原理，本支持库就是对该原理的实现。

操作系统支持： Windows、Linux

其它数据类型：

保密服务器

保密客户端

适用版本，保密通讯支持库 （1.5#0版）


保密服务器

保密服务器 普通类型 操作系统支持：Windows、Linux 跳至：保密通讯支持库

方法：

启动 | 停止 | 置连接私钥 | 发送数据
取消息代码 | 取客户句柄 | 取客户IP | 取回数据
断开连接 |  |  |

参见： 基本数据类型


启动 方法 操作系统支持：Windows、Linux 所属对象：保密服务器

启动保密服务器，绑定到指定端口，成功真，失败返回假。在启动之前必须设置相应的参数，否则启动失败。

语法： 逻辑型 保密服务器．启动 （端口号，处理函数）

参数名 | 描 述
端口号 | 必需的；整数型。服务器的端口号。
处理函数 | 必需的；子程序指针。本参数作为服务程序的事件触发方法，如果有默认事件产生，系统将自动调用的该函数。例如客户端发送数据到服务程序，或者是有客户端连接到服务程序，或者有客户端主动或意外断开与服务程序的连接，系统都会自动执行该方法。该函数没有参数。

例程：

说明：

在启动服务器的时，要有服务方法子程序以供调用，服务方法子程序主要是判别服务器和客户端之间的交互代号，并作出进一步处理的子程序。

参见：保密通讯服务器端 保密通讯客户端


停止 方法 操作系统支持：Windows、Linux 所属对象：保密服务器

停止服务器，释放已绑定端口。

语法： 无返回值 保密服务器．停止 （）

例程：

说明：停止安全服务器，释放端口


置连接私钥 方法 操作系统支持：Windows、Linux 所属对象：保密服务器

设置服务器连接的过程中使用的私钥和公共模数，公钥和公共模数是公开的。服务程序一旦定下来私钥和公钥,并把公钥公开后，这项连接密钥将不再改变，否则客户使用服务程序公开给他的公钥将不能再连接到服务程序上。加解密采用非对称的RSA加解密方法。该项设置服务器端的私钥和公共模数，客户端掌握公钥和公共模数，这样客户端和服务器端在连接成功后立刻使用该密钥进行验证，以确认通讯的双方是否可以相互信任，如果验证不成功，立刻断开连接。客户端掌握的公钥和公共模数和服务器的私钥和公共模数是相匹配的。设置成功返回真，否则返回假。

语法： 逻辑型 保密服务器．置连接私钥 （私钥文本，公共模数）

参数名 | 描 述
私钥文本 | 必需的；文本型。为十六进制数值文本，为了生成符合要求的随机密钥，可以下载使用 http://dywt.com.cn/RSATool2v14.rar 第三方工具软件（内有操作说明）。
公共模数 | 必需的；文本型。为十六进制数值文本

例程：

说明：设置服务器连接的过程中使用的私钥和公共模数。


发送数据 方法 操作系统支持：Windows、Linux 所属对象：保密服务器

向指定客户端发送数据，该方法执行成功返回真，失败返回假。

语法： 逻辑型 保密服务器．发送数据 （客户端句柄，数据）

参数名 | 描 述
客户端句柄 | 必需的；整数型。欲发送到客户端的句柄。
数据 | 必需的；通用型。准备发送的数据。

例程：

说明：向客户端发送数据。


取消息代码 方法 操作系统支持：Windows、Linux 所属对象：保密服务器

取得触发处理函数的消息代码。该方法必须在服务程序的“处理函数”中使用。返回1表示有客户连接到服务程序，返回2表示有客户主动或意外断开与服务程序的连接，返回3表示有客户发送数据到达服务程序，返回-1表示出错。

语法： 整数型 保密服务器．取消息代码（）

例程：

说明：取回客户端传回的消息代码 到变量中，做消息处理用。


取客户句柄 方法 操作系统支持：Windows、Linux 所属对象：保密服务器

取得触发处理函数的客户端句柄。该方法必须在服务程序的“处理函数”中使用。正确执行返回客户的句柄，出错返回-1。

语法： 整数型 保密服务器．取客户句柄（）

例程：

说明：得到当前发送消息代码的客户端线程所对应的句柄，以便进行针对此客户端的信息处理。


取客户IP 方法 操作系统支持：Windows、Linux 所属对象：保密服务器

取客户端IP地址，成功返回客户端IP，失败返回空字符串。

语法： 文本型 保密服务器．取客户IP （客户句柄）

参数名 | 描 述
客户句柄 | 必需的；整数型。客户的句柄值。

例程：

说明：欲使用此命令一般要先试用服务器程序.取客户句柄命令（）。


取回数据 方法 操作系统支持：Windows、Linux 所属对象：保密服务器

取得到达服务程序的数据。该方法必须在服务程序的“处理函数”中使用。使用本方法之前首先应该通过“取消息代码”方法得到消息的代码，如果消息代码等于3再调用本方法得到客户端发送到服务器的数据。如果成功取回数据返回真，否则返回假。

语法： 逻辑型 保密服务器．取回数据 （数据）

参数名 | 描 述
数据 | 必需的；字节集，参数数据只能提供变量。客户端发送到服务器的数据。

例程：

说明：在处理函数中,当消息代码为3时 ，说明收到客户端传来数据，用此命令接收，收到以后是字节集型的数据，可以转为文本型，也可以直接存为文件。


断开连接 方法 操作系统支持：Windows、Linux 所属对象：保密服务器

断开指定客户端连接。

语法： 逻辑型 保密服务器．断开连接 （客户句柄）

参数名 | 描 述
客户句柄 | 必需的；整数型。客户的句柄值。

例程：

说明：断开指定客户端与服务器之间的连接。


保密客户端

保密客户端 普通类型 操作系统支持：Windows、Linux 跳至：保密通讯支持库

方法：

置连接公钥 | 置加密方式 | 连接 | 断开
取消息代码 | 取回数据 | 发送数据 |

参见： 基本数据类型


置连接公钥 方法 操作系统支持：Windows、Linux 所属对象：保密客户端

设置客户端连接的过程中使用的公钥和公共模数，公钥和公共模数是公开的。加解密采用非对称的RSA加解密方法。服务程序掌握私钥和公共模数，这样客户端和服务器端在连接成功后立刻使用该密钥进行验证，以确认通讯的双方是否可以相互信任，如果验证不成功，立刻断开连接。客户端掌握的公钥和公共模数和服务器的私钥和公共模数是相匹配的。设置成功返回真，否则返回假。

语法： 逻辑型 保密客户端．置连接公钥 （公钥文本，公共模数）

参数名 | 描 述
公钥文本 | 必需的；文本型。为十六进制数值文本。
公共模数 | 必需的；文本型。为十六进制数值文本。

例程：

说明：设置客户端连接的过程中使用的公钥和公共模数.


置加密方式 方法 操作系统支持：Windows、Linux 所属对象：保密客户端

设置数据网络传输过程中的加密方式，如果没有经过该项设置默认的加密方式为des方法。

语法： 无返回值 保密客户端．置加密方式 （加密方式）

参数名 | 描 述
加密方式 | 必需的；整数型。该值为0代表采用rc4方法加密，该值为1代表采用des方法加密。

例程：

说明：设置数据网络传输过程中的加密方式


连接 方法 操作系统支持：Windows、Linux 所属对象：保密客户端

连接到网络服务器，成功真，失败返回假。

语法： 逻辑型 保密客户端．连接 （服务器地址，端口，处理函数）

参数名 | 描 述
服务器地址 | 必需的；文本型。本参数是欲连接的服务器的IP地址，也可以是服务器的域名或者是内网的计算机名。
端口 | 必需的；整数型。待连接服务器的端口。
处理函数 | 必需的；子程序指针。本参数作为客户程序的事件触发方法，如果有默认事件产生，系统将自动调用的该函数。例如服务器发送数据到客户端，或者是服务器主动或意外断开与客户端的连接，系统都会自动执行该方法。该函数没有参数。

例程：

说明：连接网络服务器，参数3是指针型变量，需指向处理函数。


断开 方法 操作系统支持：Windows、Linux 所属对象：保密客户端

断开与服务器的连接，无返回值。

语法： <无返回值> 保密客户端．断开 （）

例程：

说明：断开与服务器的连接，无返回值。


取消息代码 方法 操作系统支持：Windows、Linux 所属对象：保密客户端

取得触发“处理函数”的消息代码。该方法必须在客户程序的“处理函数”中使用。返回1表示有服务器主动或意外断开与客户程序的连接，返回2表示有数据到达客户程序，返回-1表示出错。

语法： 整数型 保密客户端．取消息代码（）

例程：

说明：当服务器和客户端有消息传来的时候触发处理函数，在处理过程中，首先判断服务器传回的消息代码，再作下一步的处理。


取回数据 方法 操作系统支持：Windows、Linux 所属对象：保密客户端

取回服务程序发送到客户端的数据。该方法必须在客户程序的“处理函数”中使用。使用本方法之前首先应该通过“取消息代码”方法得到消息的代码，如果消息代码等于2再调用本方法得到服务程序发送到客户端的数据。如果成功取回数据返回真，否则返回假。

语法： 逻辑型 保密客户端．取回数据 （数据）

参数名 | 描 述
数据 | 必需的；字节集，参数数据只能提供变量。服务器发送到客户端的数据。

例程：

说明：取回服务程序发送到客户端的数据，发回的是字节集的数据，可以进行转换后处理，也可以直接存为文件。


发送数据 方法 操作系统支持：Windows、Linux 所属对象：保密客户端

向指定服务器发送数据。

语法： 逻辑型 保密客户端．发送数据 （数据）

参数名 | 描 述
数据 | 必需的；通用型。准备发送的数据。

例程：

说明：向指定服务器发送数据。数据的类型是通用型。


系统基本数据类型列表及其说明如下：

1. 字节型。可容纳 0 到 255 之间的数值。

2. 短整数型。可容纳 -32,768 到 32,767 之间的数值，尺寸为 2 个字节。

3. 整数型。可容纳 -2,147,483,648 到 2,147,483,647 之间的数值，尺寸为 4 个字节。

4. 长整数型。可容纳 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的数值，尺寸为 8 个字节。

5. 小数型。可容纳 3.4E +/- 38 (7位小数) 之间的数值，尺寸为 4 个字节。

6. 双精度小数型。可容纳 1.7E +/- 308 (15位小数) 之间的数值，尺寸为 8 个字节。

7. 逻辑型。值只可能为“真”或“假”，尺寸为 4 个字节。“真”和“假”为系统预定义常量，其对应的英文常量名称为“true”和“false”。

8. 日期时间型。用作记录日期及时间，尺寸为 8 个字节。

9. 文本型。用作记录一段文本，文本由以字节 0 结束的一系列字符组成。

10.字节集。用作记录一段字节型数据。字节集与字节数组之间可以互相转换，在程序中允许使用字节数组的地方也可以使用字节集，或者相反。字节数组的使用方法，譬如用中括号对（“[]”）加索引数值引用字节成员，使用数组型数值数据进行赋值等等，都可以被字节集所使用。两者之间唯一的不同是字节集可以变长，因此可把字节集看作可变长的字节数组。

11.子程序指针。用作指向一个子程序，尺寸为 4 个字节。具有此数据类型的变量可以用来间接调用子程序。参见例程 sample.e 中的相应部分。

    在以上的基本数据类型中，字节型、短整数型、整数型、长整数型、小数型、双精度小数型被统称为“数值型”，它们之间可以任意转换。不过编程需要注意转换可能带来的精度丢失。譬如：将整数 257 转换为字节后的结果为 1 ，这是因为值 257 超出了字节型数据的最大上限 255 ，从而产生了溢出。

    另外，通用型数据类型仅在系统内部使用，它能够匹配所有的系统基本数据类型、库定义数据类型、自定义数据类型。


系统基本数据类型列表及其说明如下：

  1. 字节型。可容纳 0 到 255 之间的数值。

  2. 短整数型。可容纳 -32,768 到 32,767 之间的数值，尺寸为 2 个字节。

  3. 整数型。可容纳 -2,147,483,648 到 2,147,483,647 之间的数值，尺寸为 4 个字节。

  4. 长整数型。可容纳 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的数值，尺寸为 8 个字节。

  5. 小数型。可容纳 3.4E +/- 38 (7位小数) 之间的数值，尺寸为 4 个字节。

  6. 双精度小数型。可容纳 1.7E +/- 308 (15位小数) 之间的数值，尺寸为 8 个字节。

  7. 逻辑型。值只可能为“真”或“假”，尺寸为 2 个字节。“真”和“假”为系统预定义常量，其对应的英文常量名称为“true”和“false”。

  8. 日期时间型。用作记录日期及时间，尺寸为 8 个字节。

  9. 文本型。用作记录一段文本，文本由以字节 0 结束的一系列字符组成。

  10. 字节集。用作记录一段字节型数据。字节集与字节数组之间可以互相转换，在程序中允许使用字节数组的地方也可以使用字节集，或者相反。字节数组的使用方法，譬如用中括号对（“[]”）加索引数值引用字节成员，使用数组型数值数据进行赋值等等，都可以被字节集所使用。两者之间唯一的不同是字节集可以变长，因此可把字节集看作可变长的字节数组。

  11. 子程序指针。用作指向一个子程序，尺寸为 4 个字节。具有此数据类型的变量可以用来间接调用子程序。参见例程 sample.e 中的相应部分。

    在以上的基本数据类型中，字节型、短整数型、整数型、长整数型、小数型、双精度小数型被统称为“数值型”，它们之间可以任意转换。不过编程需要注意转换可能带来的精度丢失。譬如：将整数 257 转换为字节后的结果为 1 ，这是因为值 257 超出了字节型数据的最大上限 255 ，从而产生了溢出。

    另外，通用型数据类型仅在系统内部使用，它能够匹配所有的系统基本数据类型、库定义数据类型、自定义数据类型。