请熟悉微软新加密接口(CNG)的前辈来,请教下 bcrypt/ncrypt 相同的接口有啥区别?

shier2817 2019-01-26 03:33:22
在微软下一代加密服务接口里,主要涉及到两个 DLL:bcrypt.dll 和 ncrypt.dll,头文件也是以 DLL 名称命名的。。
其中关于加解密部分,特别是密钥部分,两者很多接口相似或功能相同,连 MSDN 的文档也表示可以用这个也可以用那个。。。

我目前看出来的区别是 ncrypt 可以创建永久密钥保存到电脑,也能创建临时密钥;而 bcrypt 只能创建临时的不能保存对吧?

再一个就是 ncrypt 可以设置很多属性,比较灵活,而 bcrypt 貌似就几个用于密钥的属性(我不知道把 bcrypt 生成的密钥用 ncrypt 的 API 获取或设置属性行不行,应该试一下)

而其他的我就看不出啥区别了,好像对称加密/非对称加密,两者都有可以独立完成密钥生成和加解密操作的 API 吧。。。


1、为什么会这样呢?我们在使用的时候,用什么准则去选择用哪个接口呢?我是指两个都能实现需求的前提下。。。

2、比如要写个通用的模块(用在别的语言),在初始化函数里,用什么参数来确定该使用哪一套接口呢?跟上个问题基本类似。。。

3、哪个更底层呢?我个人觉得应该是 ncrypt 吧?是不是 bcrypt 的接口实际上是调用 ncrypt 的?


这是 MSDN 链接:https://docs.microsoft.com/en-us/windows/desktop/SecCNG/cng-portal
...全文
297 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zealrains 2021-09-24
  • 打赏
  • 举报
回复

bcrypt.dll 主要加解密
ncrypt.dll 主要密钥存储
至于你说的,两个库里都有加解密接口,ncrypt.dll的加解密 实际调用的是bcrypt.dll
两者使用方法都有例子

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧