密码系统api设计 三段式
1.设计目标
SEPC-API的设计目标有3个:简单易用、可扩展和可移植。首先,SEPC-API的设计应易于用户使用,它隐藏特定加密算法的细节,提供统一的接口,只要用户了解基本的密码概念,就可以使用此API其次,它便于扩展。随着时间的推移,会不断出现新的加密法,SEPC-API应该能够扩展来包含新的算法。最后,该API还应该是与平台无关的。
2.SEPC-API 的结构
SEPC-API的结构是密钥类的分层结构。这种分层结构的根是一个抽象密钥类-BaseKey。使用这个抽象类的日的不是为了代码重用,而是便于函数能够获得该类的指针。这样设计的目的是:函数无需知道与密钥相关的算法类型,而只是使用该类中声明的加解密方法。微软的API是传递包含算法和密钥信息的Key Blob 句柄,而SEPC-API是传递指向BaseKey基类的指针。
api设计3.基类设计
基类BaseKey是一种抽象类。SEPC-API 中的所有密钥类都是从该基类派生而来。设计此基类不是为每种类型的算法构造一个函数或向每个函数传递算法类型,而是为了使用到该抽象密钥基类的指针。BaseKey类声明了加密系统中的所有基本函数,包括密钥生成、加密和解密等。如果一个函数不需要更多特定的功能,就可以直接使用到抽象密钥基类的指针;但是,若需要特定的功能,就需使用特定派生类的指针,例如要编写公钥密码所特定的函数,就需要使用公钥类的指针。