首页 > 其他分享 >实验一-密码引擎-加密API研究

实验一-密码引擎-加密API研究

时间:2024-04-10 11:36:55浏览次数:12  
标签:API 11 加密 函数 引擎 2012 GMT

任务详情

密码引擎API的主要标准和规范包括:
1 微软的Crypto API
2 RAS公司的PKCS#11标准
3 中国商用密码标准:GMT 0016-2012 智能密码钥匙密码应用接口规范,GMT 0018-2012密码设备应用接口规范等

研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客链接和代码链接。
内容:
0 查找各种标准的原始文档,研究学习(至少包含Crypto API,PKCS#11,GMT 0016-2012,GMT 0018-2012)(5分)
1 总结这些API在编程中的使用方式(5分)
2 列出这些API包含的函数,进行分类,并总结它们的异同(10分)
3 以龙脉GM3000Key为例,写出调用不同接口的代码(Crypto API,PKCS#11,SKF接口),把运行截图加入博客,并提供代码链接(10分)

各种标准的原始文档

  1. Crypto::https://docs.microsoft.com/en-us/windows/win32/seccrypto/cryptoapi-system-architecture

  2. PKCS#11::https://docs.oracle.com/javase/9/security/pkcs11-reference-guide1.htm#JSSEC-GUID-30E98B63-4910-40A1-A6DD-663EAF466991

  3. GMT 0016-2012:https://max.book118.com/html/2017/1225/145915404.shtm

  4. GMT 0018-2012 :http://www.gmbz.org.cn/main/viewfile/20180110020642562680.html

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

  1. Crypto API:

    • 概述:Crypto API是一组用于加密和解密操作的软件接口。它通常由操作系统提供,并用于执行各种加密算法和密钥管理功能。
    • 使用方式:在编程中,开发人员可以使用Crypto API来实现数据加密、数字签名、随机数生成等功能。具体使用方式取决于操作系统和编程语言,通常需要调用相应的API函数来执行所需的加密操作。
  2. PKCS#11:

    • 概述:PKCS#11(Public-Key Cryptography Standards #11)是一种通用的加密设备接口标准,用于与各种加密硬件(如智能卡、USB加密令牌等)进行通信。
    • 使用方式:在编程中,开发人员可以使用PKCS#11标准来与加密硬件进行交互,执行诸如密钥管理、数字签名、加密解密等操作。通常需要使用PKCS#11提供的API函数,以及特定加密硬件厂商提供的驱动程序或库来实现功能。
  3. GMT 0016-2012:

    • 概述:GMT 0016-2012是中国国家标准,定义了密码应用接口规范,用于在计算机系统中实现密码算法和安全功能。
    • 使用方式:在编程中,如果开发人员需要遵循中国国家标准,可以参考GMT 0016-2012定义的接口规范来实现相应的密码算法和安全功能。具体使用方式可能涉及调用标准定义的接口函数或类库来实现加密、解密、数字签名等操作。
  4. GMT 0018-2012:

    • 概述:GMT 0018-2012是中国国家标准,定义了密码术语及定义,用于统一密码领域的术语和定义。
    • 使用方式:在编程中,开发人员可以参考GMT 0018-2012中定义的术语和定义,以确保在密码相关的代码编写和交流中使用一致的术语和理解。这可以帮助避免混淆和误解,提高代码的可读性和可维护性。
      总体来说,这些技术在编程中的使用方式取决于具体的

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

Crypto API

分类:

  1. 加密算法函数:
    • 加密函数(如AES_encrypt)
    • 解密函数(如AES_decrypt)
  2. 摘要算法函数:
    • 摘要计算函数(如SHA1)
  3. 数字签名函数:
    • 签名生成函数(如RSA_sign)
    • 签名验证函数(如RSA_verify)
  4. 密钥管理函数:
    • 密钥生成函数(如RSA_generate_key)
    • 密钥导入导出函数(如EVP_PKEY_export)
  5. 其他:
    • 随机数生成函数(如RAND_bytes)

异同:

  • 优点
    • 提供了各种加密算法和功能的标准接口,方便开发人员使用。
    • 可以在不同操作系统和编程语言中使用。
  • 缺点
    • 可能在不同操作系统或平台上有一定差异,需要考虑兼容性问题。

PKCS#11

分类:

  1. 密钥管理函数:
    • 密钥生成函数(如C_GenerateKey)
    • 密钥导入导出函数(如C_ImportKey)
  2. 数字签名函数:
    • 签名生成函数(如C_Sign)
    • 签名验证函数(如C_Verify)
  3. 加密解密函数:
    • 加密函数(如C_Encrypt)
    • 解密函数(如C_Decrypt)
  4. 其他安全功能:
    • 会话管理函数(如C_OpenSession)
    • 对象管理函数(如C_CreateObject)

异同:

  • 优点
    • 提供了与各种加密硬件通信的标准接口,支持硬件加速的加密操作。
    • 可以在不同的加密硬件上使用。
  • 缺点
    • 需要了解特定硬件厂商提供的驱动程序或库。

GMT 0016-2012

分类:

  1. 密码算法接口函数:
    • 加密算法函数(如SM2_Encrypt)
    • 解密算法函数(如SM2_Decrypt)
  2. 数字签名接口函数:
    • 签名生成函数(如SM2_Sign)
    • 签名验证函数(如SM2_Verify)
  3. 密钥管理接口函数:
    • 密钥生成函数(如SM2_GenerateKey)
    • 密钥导入导出函数(如SM2_ExportKey)

异同:

  • 优点
    • 遵循中国国家标准,适用于在中国国内开发的项目。
    • 提供了与国家密码算法和安全标准相关的接口函数。
  • 缺点
    • 仅适用于特定的国家或地区。

GMT 0018-2012

分类:

  1. 密码术语和定义:
    • 定义了各种密码学术语的含义和解释,如密钥、数字签名等。

异同:

  • 优点
    • 统一了密码学领域的术语和定义,有助于提高交流和理解的一致性。
  • 缺点
    • 主要是术语和定义,没有具体的编程接口函数。

代码及截图

  1. EncryptDecryptFile

  1. Sign_Verify

  1. PKCS#11

标签:API,11,加密,函数,引擎,2012,GMT
From: https://www.cnblogs.com/pengqiqi/p/18120609

相关文章

  • 实验一-密码引擎-3-加密API研究
    一、任务详情密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提......
  • Apifox 集成,Fast Request 2024.1.4 发布
    RestfulFastRequest是一个类似于Postman的IDEA插件。它是一个强大的restfulapi工具包插件,可以根据已有的方法帮助您快速、自动生成url和params。RestfulFastRequest=API调试工具+API管理工具+API搜索工具。它有一个漂亮的界面来完成请求、检查服务器响......
  • Python快速构建Web API的利器库之Toapi使用详解
      概要Toapi模块是一个强大的Python库,可以帮助开发者快速构建WebAPI。通过Toapi,开发者可以轻松地将网页内容转换为API接口,实现数据的抓取和解析。本文将介绍Toapi模块的基本用法和功能,以及多种Python案例,帮助读者更好地理解和应用Toapi模块。Toapi模块的基本用法Toap......
  • 探索数据背后的强劲引擎MySQL(1):Windows安装MySQL
    该文章Github地址:https://github.com/AntonyCheng/mysql-notes【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template【有条件的情况下推荐......
  • 探索数据背后的强劲引擎MySQL(2):Linux安装MySQL
    该文章Github地址:https://github.com/AntonyCheng/mysql-notes【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template【有条件的情况下推荐......
  • 如何用加密技术守护你的数字世界(9):SSL/TLS
    该文章Github地址:https://github.com/AntonyCheng/encryption-notes【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template【有条件的情况......
  • 1688商品详情数据API接口(1688.item_get)
    1688开放平台提供了商品详情信息API接口,允许开发者获取商品的详细信息。该API接口的主要功能和优势包括:商品信息获取:通过此接口可以获取商品的ID、名称、价格、销量、评价等关键信息。多领域应用:商品详情API在电商应用、比价工具、数据分析等多个领域具有广泛的应用价值,有助......
  • 快速集成和使用 drools 规则引擎
    规则引擎技术的主要思想是将应用程序中的业务规则分离出来,业务规则不再以程序代码的形式驻留在系统中,而是存储在独立的文件或者数据库中,完全独立于程序。业务人员可以像管理数据一样对业务规则进行管理。业务规则在程序运行时被加载到规则引擎中供应用系统调用。drools是当前比......
  • qt 6 使用sqlite进行加密
    在做项目时使用的sqlite,但是这个数据库没有自带的密码设置,查了好多资料,终于解决了,感谢这个博主大佬的资料qtsqlite数据库加密和navicat实现互连互通_qtsqliteaes_128_cbc-CSDN博客下面仅供个人记录做参考1.https://codeload.github.com/devbean/QtCipherSqlitePlugin/zip/re......
  • BOM教程笔记,常用API
    BOM1、window对象:在浏览器中替代global对象的全局对象2个角色:1.全局作用域!2.修改或设置浏览器窗口相关属性。1.打开新连接的方式:3种:在当前窗口内,替换当前页html:默认_selfjs:varnewWin=[window.]open(“url”,“_self”)打开新窗口,可重复打开:html:js:varnewWin=[......