c++ 使用bcrypt_c – CNG:何时使用BCrypt * vs NCrypt *系列函数

BCrypt函数族被归类为

Cryptographic Primitives,而NCrypt函数族被归类为

Key Storage and Retrieval.

主要区别在于BCrypt函数仅在处理短暂键时使用,而NCrypt函数在需要持久键时使用.

实际上,BCrypt函数通常用于散列和对称加密,而NCrypt函数用于公钥/私钥加密和解密,公钥/私钥签名和验证,以及共享秘密(例如DH和ECDH)协商.

虽然可以使用BCrypt函数完成一些公钥/私钥操作,但它们只能用于临时密钥,因此用途有限.

持久密钥存储在特定于每个用户(或系统)的密钥容器中.这是一种安全措施,可确保用户无法查看彼此的私钥.

通常,您需要将以下函数用于以下操作:

> BCryptHashData:用于散列和HMAC(MD5,SHA1,SHA256,SHA384,SHA512)

>相关:BCryptCreateHash,BCryptFinishHash,BCryptDestroyHash

> BCryptEncrypt:对称密钥加密(DES,3DES,AES).

>相关:BCryptGenerateSymmetricKey,BCryptDestroyKey

> BCryptDecrypt:对称密钥解密(DES,BCryptDestroyKey

> NCryptEncrypt:非对称密钥加密(RSA)

> NCryptDecrypt:非对称密钥解密(RSA)

> NCryptSignHash:不对称密钥签名(RSA,DSA,ECDSA)

> NCryptVerifySignature:非对称密钥签名验证(RSA,ECDSA)

> NCryptSecretAgreement:非对称密钥秘密共享(DH,ECDH)

>相关:NCryptDeriveKey

对于其中一些案例,可在MSDN获得示例.

对于一个真实世界的例子,我在UFTP源代码中实现了所有这些,特别是encrypt_cng.c文件(在encryption.h中定义了typedef,以允许此文件中的函数实现一个通用的应用程序)级别API允许使用其他加密库,如CryptoAPI和OpenSSL).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值