加密API研究

密码引擎API标准和规范比较

0. 查找各种标准的原始文档,研究学习

  1. Microsoft Crypto API

  2. PKCS#11 标准

  3. 中国商用密码标准

    • GMT 0016-2012 智能密码钥匙密码应用接口规范
    • GMT 0018-2012 密码设备应用接口规范

1. 总结这些API在编程中的使用方式

  1. Microsoft Crypto API

    • 主要用于Windows操作系统中的密码学应用程序开发
    • 提供了一组丰富的函数和数据结构,用于执行各种加密、解密、签名、验证等操作
    • 支持多种加密算法,如AES、DES、RSA等
    • 可以通过调用API函数来访问系统提供的密码服务
  2. PKCS#11 标准

    • 定义了一个跨平台的密码学API,用于访问令牌(如智能卡、USB令牌等)上的密钥和其他加密对象
    • 提供了一组标准的函数,用于执行加密、解密、签名、验证等操作
    • 支持多种加密算法,如AES、DES、RSA等
    • 可以通过调用PKCS#11 API函数来访问令牌上的密码服务
  3. 中国商用密码标准

    • GMT 0016-2012 智能密码钥匙密码应用接口规范
      • 定义了智能密码钥匙的密码应用接口规范
      • 提供了一组标准的函数,用于访问智能密码钥匙上的密钥和其他加密对象
    • GMT 0018-2012 密码设备应用接口规范
      • 定义了密码设备的应用接口规范
      • 提供了一组标准的函数,用于访问密码设备上的密钥和其他加密对象

2. 列出这些API包含的函数,进行分类,并总结它们的异同

Microsoft Crypto API

主要函数分类:

  1. 密钥管理函数:

    • CryptAcquireContext
    • CryptGenKey
    • CryptDestroyKey
    • CryptImportKey
    • CryptExportKey
  2. 加解密函数:

    • CryptEncrypt
    • CryptDecrypt
    • CryptCreateHash
    • CryptHashData
    • CryptSignHash
    • CryptVerifySignature
  3. 杂项函数:

    • CryptReleaseContext
    • CryptGetProvParam
    • CryptSetProvParam

PKCS#11 标准

主要函数分类:

  1. 会话管理函数:

    • C_Initialize
    • C_Finalize
    • C_OpenSession
    • C_CloseSession
  2. 对象管理函数:

    • C_CreateObject
    • C_DestroyObject
    • C_GetAttributeValue
    • C_SetAttributeValue
  3. 加解密函数:

    • C_Encrypt
    • C_Decrypt
    • C_Sign
    • C_Verify
  4. 杂项函数:

    • C_GetInfo
    • C_GetSlotList
    • C_GetMechanismList

中国商用密码标准

GMT 0016-2012 智能密码钥匙密码应用接口规范:

  1. 密钥管理函数:

    • SKF_WaitForDevEvent
    • SKF_EnumDev
    • SKF_ConnectDev
    • SKF_DisconnectDev
    • SKF_CreateContainer
    • SKF_DeleteContainer
    • SKF_EnumContainer
    • SKF_OpenContainer
  2. 加解密函数:

    • SKF_GenRandom
    • SKF_Encrypt
    • SKF_Decrypt
    • SKF_SignData
    • SKF_VerifySignature
  3. 杂项函数:

    • SKF_GetDevState
    • SKF_GetContainerType
    • SKF_GetContainerInfo

GMT 0018-2012 密码设备应用接口规范:

  1. 设备管理函数:

    • SKF_WaitForDevEvent
    • SKF_EnumDev
    • SKF_ConnectDev
    • SKF_DisconnectDev
  2. 密钥管理函数:

    • SKF_CreateContainer
    • SKF_DeleteContainer
    • SKF_EnumContainer
    • SKF_OpenContainer
  3. 加解密函数:

    • SKF_GenRandom
    • SKF_Encrypt
    • SKF_Decrypt
    • SKF_SignData
    • SKF_VerifySignature
  4. 杂项函数:

    • SKF_GetDevState
    • SKF_GetContainerType
    • SKF_GetContainerInfo

异同点总结:

  1. 功能覆盖范围:

    • Microsoft Crypto API和PKCS#11标准都提供了较为全面的密码学功能,包括密钥管理、加解密、签名验证等。
    • 中国商用密码标准主要针对智能密码钥匙和密码设备,功能相对更加专注。
  2. 跨平台性:

    • Microsoft Crypto API主要针对Windows操作系统,跨平台性较差。
    • PKCS#11标准和中国商用密码标准都是跨平台的,可以在多种操作系统上使用。
  3. 标准化程度:

    • PKCS#11标准和中国商用密码标准都是经过标准化组织制定的正式标准。
    • Microsoft Crypto API是微软自行定义的API,标准化程度相对较低。
  4. 应用场景:

    • Microsoft Crypto API主要应用于Windows操作系统下的密码学应用程序开发。
    • PKCS#11标准主要应用于访问令牌(如智能卡、USB令牌等)上的密钥和加密对象。
    • 中国商用密码标准主要应用于访问智能密码钥匙和密码设备上的密钥和加密对象。

运行截图

















posted @ 2024-04-09 18:48  20211328-张树杰  阅读(70)  评论(0)    收藏  举报