因为过于复杂的加密算法实现起来非常困难,所以在过去,许多应用程序只能使用非常简单的加密技术,这样做的结果就是加密的数据很容易就可以被人破译。而使用Microsoft提供的加密应用程序接口(即Cryptography API),或称CryptoAPI,就可以方便地在应用程序中加入强大的加密功能,而不必考虑基本的算法。本文将对CryptoAPI及其使用的数据加密原理作一简单的介绍,然后给出了用CryptoAPI编写加密程序的大致步骤,最后以一个文件的加密、解密程序为例演示了CryptoAPI的部分功能。
---- 1. CryptoAPI简介
---- CryptoAPI是一组函数,为了完成数学计算,必须具有密码服务提供者模块(CSP)。Microsoft通过捆绑RSA Base Provider在操作系统级提供一个CSP,使用RSA公司的公钥加密算法,更多的CSP可以根据需要增加到应用中。事实上,CSP有可能与特殊硬件设备(如智能卡)一起来进行数据加密。CryptoAPI接口允许简单的函数调用来加密数据,交换公钥,散列一个消息来建立摘要以及生成数字签名。它还提供高级的管理操作,如从一组可能的CSP中使用一个CSP。此外,CryptoAPI还为许多高级安全性服务提供了基础,包括用于电子商务的SET,用于加密客户机/服务器消息的PCT,用于在各个平台之间来回传递机密数据和密钥的PFX,代码签名等等。CryptoAPI的体系结构如下图:
---- 目前支持CryptoAPI的Windows系统有:Windows 95 OSR2、Windows NT SP3及后续版本、Windows 98、Windows 2000等。CryptoAPI的配置信息存储在注册表中,包括如下密钥:
---- 2.数据加密原理
---- 数据加密的流程如下图:
---- CryptoAPI使用两种密钥:会话密钥与公共/私人密钥对。会话密钥使用相同的加密和解密密钥,这种算法较快,但必须保证密钥的安全传递。公共/私人密钥对使用一个公共密钥和一个私人密钥,私人密钥只有专人才能使用,公共密钥可以广泛传播。如果密钥对中的一个用于加密,另一个一定用于解密。公共/私人密钥对算法很慢,一般只用于加密小批数据,例如用于加密会话密钥。
---- CryptoAPI支持两种基本的编码方法:流式编码和块编码。流式编码在明码文本的每一位上创建编码位,速度较快,但安全性较低。块编码在一个完整的块上(一般为64位)上工作,需要使用填充的方法对要编码的数据进行舍入,以组成多个完整的块。这种算法速度较慢,但更安全。
---- 3.应用举例
---- 下面以两个文件加密与解密的C程序片断为例,演示一下CryptoAPI的强大功能。这两个程序均为Win32控制台应用,程序省略了出错处理,实际运行时请加入。
---- ①文件加密
---- 以上代码在Windows NT4.0、Visual C++6.0环境中编译通过。
---- 除直接用于加密数据外,CryptoAPI还广泛用于产生并确认数字签名,这里就不一一举例说明了,有兴趣的读者可以参考MSDN文档。
分享到:
相关推荐
*CryptoAPI数据加解密,它的流程为: *(加密模块)1.创建会话密钥 2.加密数据 3.安全保存或交换会话密钥 *(解密模块)1.获取会话密钥 2.解密数据 *它的加密是基于对称加密算法的(对称算法加密解密速度快),对...
用 Microsoft CryptoAPI对数据进行加解密.pdf
本文整理了如何使用CryptoAPI 操作ukey进行数字签名。附上流程和部分代码,讲解cryptoapi实际应用以及应用中关键问题的解决方法,在这里,仅介绍数字签名(加密流程类似,但是,操作略有不同,所需要的函数也不同),...
• 证书编/解码函数:用于数据加密、解密、哈希等操作。这类函数支持数据的加密/解密操作;计算哈希、创建和校验数字签名操作;实现证书、证书撤销列表、证书请求和证书扩展等编码和解码操作。 • 证书库管理函数:...
在这个信息爆炸的时代,我们不得不对信息的安全提高警惕。加密作为保障数据信息安全的一种方式,越来越受到人们的关注。...我将把自己对Microsoft CryptoAPI的一些肤浅的理解与大家共享,有什么不妥之处望不吝赐教。
Cryptographic API (CryptoAPI) 是微软在 Windows 操作系统中添加的密 码编译机能,作为数据加密与解密功能的重要基础,CryptoAPI 支持同步,异步 的密钥加密处理,以及操作系统中的数字证书的管理工作。本系统是...
CryptoAPI 提供了一组函数,这些函数允许应用程序在对用户的敏感私钥数据提供保护时以灵活的方式对数据进行加密或数字签名。实际的加密操作是由称为加密服务提供程序 (CSP) 的独立模块执行。 利用CryptoAPI加解密...
node-crypto-api:提供一个API来消费来自多个加密货币市场的数据
一篇文章,展示如何使用Crypto API制作一个简单的MFC类,该类可以加密和解密不同类型的数据
2. 利用CryptoAPI实现公开密钥加密 (1) 导出密钥(导出公钥/导出私钥) (2) 加密和解密 • 导出的公钥可以发给其他用户,由用户使用函数CryptImportKey()导入得到密钥句柄,然后使用函数CryptEncrypt()来加密数据 •...
使用IndexedDB和本机Web Crypto API的基于承诺的微型加密密钥库存储 这是使用IndexedDB和本机的基于承诺的微型密码密钥存储,只有两个小依赖性: 用于使用IndexedDB的更好的devxp,而用于使用Web Crypto API的更好的...
Api-crypto-exchange.zip,汇集加密交换列表,以统一方式与其API交互。加密交换,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象...
对于新手,微软提供了一个自己生成的加密解决方案,CryptoAPI 。对于轻量级的加密,军用级别的安全就不在考虑范围之内,它具有相对容易实现的优势:管理员可以安装一个名为CAPICOM 的ActiveX 控制,它可以在T-SQL存储...
加密货币收集有用的python脚本的集合,以从CoinMarketCap的crypto API中获取数据
org.ietf.jgss 此包提供一个框架,该框架允许应用程序开发人员通过利用统一的 API 使用一些来自各种基础安全机制(如 Kerberos)的安全服务,如验证、数据完整性和和数据机密性。 org.omg.CORBA 提供 OMG CORBA API ...
json加密库提供了对json对象的特定字段进行加密的功能。 密码json对象仍然是完全兼容的json对象,但是带有包含加密信息的其他字段。 加密json对象 准备加密器 创建JsonEncrypter对象 以与使用Cipher.getInstance...
Api-Cryptocurrency-Portfolio.zip,使用google apps脚本(gas)自动创建google sheets,用于管理具有多个exchangescryptocurrency投资组合的加密货币跟踪电子表格,一个api可以被认为是多个软件设备之间通信的指导...
Microsoft提供的加密应用程序接口(即Cryptography API),或称CryptoAPI,它可以方便地在应用程序中加入强大的签名和加密功能,而不必考虑基本的算法。CryptoAPI是一组函数,为了完成数学计算,必须依赖密码服务...
加密数据获取器使用cryptocompare API获取,保存和使用加密数据的应用程序
Jose JWE和JWS的Javascript库 总览 JavaScript库,用于对JSON Web加密(JWE)和JSON Web签名(JWS)格式的数据进行签名/验证和加密/解密。... 该库使用Web Crypto API,该API在(最近的浏览器)[ ]中可用。