Microsoft CryptoAPI加密技术(二)

上次我们讲了Microsoft CryptoAPI的构成以及会话密钥的使用。接下来我们将看一下公私密钥对的使用、HASH算法、数字签名等技术。

一、 公用密钥加密技术

公用密钥加密技术使用两个不同的密钥:公钥和私钥。私钥必须安全的保管好不能被外人知道,而公钥可以告诉任何人,只要他需要。通常公钥是以数字证书的形式发布的。

用公私密钥对中的一个密钥加密的数据只能用密钥对中的另一个密钥才能解密。也就是说用用户A的公钥加密的数据只能用A的私钥才能解密,同样,用A的私钥加密的数据只能用A的公钥才能解密。

如果用私钥签名一个消息,那么必须用与之对应的公钥去验证签名的有效性。

不幸的是公用密钥加密技术的效率非常低甚至只有对称加密的千分之一,所以不适合对大量的数据进行加密。实际上,公用密钥加密技术一般用来加密会话密钥,而数据加密可以用对称加密的方法。

好了,让我们回到Microsoft CryptoAPI。我们知道一个CSP有一个密钥库,这个密钥库有一个或多个密钥容器。而密钥容器中有什么呢?一般来说,一个密钥容器中有两对公私密钥对,一对用来加密会话密钥,而另一对用来进行数字签名,也就是大家知道的key exchange key pair和signature key pair。

那么,怎么得到这些密钥对呢?

if(CryptGetUserKey(   hCryptProv,                     // 我们已经得到的CSP句柄   AT_SIGNATURE,                   // 这里想得到signature key pair   &hKey))                         // 返回密钥句柄{    printf("A signature key is available.\n");}else		//取signature key pair错误{    printf("No signature key is available.\n");    if(GetLastError() == NTE_NO_KEY) //密钥容器里不存在signature key pair    {       // 创建 signature key pair.        printf("The signature key does not exist.\n");       printf("Create a signature key pair.\n");        if(CryptGenKey(          hCryptProv,		//CSP句柄          AT_SIGNATURE,	//创建的密钥对类型为signature key pair          0,			//key类型,这里用默认值          &hKey)) 		//创建成功返回新创建的密钥对的句柄       {          printf("Created a signature key pair.\n");       }       else       {          printf ("Error occurred creating a signature key.\n");        }    }    else    {        printf ("An error other than NTE_NO_KEY getting signature\key.\n");    }} // end if

将参数AT_SIGNATURE换成AT_KEYEXCHANGE就可以得到key exchange key pair。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索加密
, csp
, key
, signature
, 密钥
, 公钥
, pair
, pair类型
, pairs
密钥对
microsoft cryptoapi、cryptoswift aes加密、crypto 加密、nodejs md5加密crypto、crypto加密解密,以便于您获取更多的相关知识。

时间: 2024-11-01 05:42:59

Microsoft CryptoAPI加密技术(二)的相关文章

Microsoft CryptoAPI加密技术(一)

在这个信息爆炸的时代,我们不得不对信息的安全提高警惕.加密作为保障数据信息安全的一种方式,越来越受到人们的关注. 下面,我将把自己对Microsoft CryptoAPI的一些肤浅的理解与大家共享,有什么不妥之处望不吝赐教. 一. 加密方法: 当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命.随着计算机的发展,运算能力的增强,密码学已经取得了巨大的进展.大体来说有以下几种形式. 1. 公用密钥加密技术 加密和解密使用不同的密钥,分别叫做"公钥"和&q

Java加密技术(二)

接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法. DES DES-Data Encryption Standard,即数据加密算法.是IBM公司于1975年研究成功并公开发表的.DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密. DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位. 通过java

安全第一:.NET加密技术指南(1)

安全|加密 摘要: 信息安全是计算机应用的首要问题之一,但目前关于.NET加密功能的范例却少之又少.有鉴于此,本文探讨了在.NET平台下加密/解密文件的一般过程,并提供了一个加密/解密文件的工具. Web服务以不容置疑的态势迅速发展,促使许多单位开始考虑.NET之类的开发平台.但是,出于对安全问题的担心,一些单位总是对采用新技术心存顾虑.好在有许多成熟的安全和网络技术,例如虚拟私有网络(VPN)和防火墙等,能够极大地提高Web服务应用的安全和性能,让开发者拥有选择安全技术的自由,而不是非得使用尚

讲解数据库加密技术的功能特性与实现方法

信息安全的核心就是数据库的安全,也就是说数据库加密是信息安全的核心问题.数据库数据的安全问题越来越受到重视,数据库加密技术的应用极大的解决了数据库中数据的安全问题,但实现方法各有侧重. 随着电子商务逐渐越来越多的应用,数据的安全问题越来越受到重视.一是企业本身需要对自己的关键数据进行有效的保护:二是企业从应用服务提供商(Application Service Provider,ASP)处获得应用支持和服务,在这种情况下,企业的业务数据存放在ASP处,其安全性无法得到有效的保障.因为传统的数据库保

Java加密技术(七)

ECC ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学,是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制.在软件注册保护方面起到很大的作用,一般的序列号通常由该算法产生. 当我开始整理<Java加密技术(二)>的时候,我就已经在开始研究ECC了,但是关于Java实现ECC算法的资料实在是太少了,无论是国内还是国外的资料,无论是官方还是非官方的解释,最终只有一种答案--ECC算法在jdk1.5后加入支持,目前仅仅只能完成密钥的生成与解析. 尽管如

将Java加密技术同Windows结合起来

公共钥匙加密技术需要一个空间来存储数字证书和私钥.通过将钥匙和证书存储到一个文件中(称为keystore),Java Security Architecture实现了独立于平台的加密技术. Microsoft Windows把钥匙和证书存储到Windows注册表和文件系统中.这就是说,在Windows系统上运行安全的Java程序的用户必须在Java和Microsoft的钥匙和证书库之间输入和输出钥匙和证书.好消息是,你可以"哄骗"Java应用程序通过Microsoft本地函数来运用Mi

运用加密技术保护Java源代码

Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码.本文讨论如何在不修改原有程序的情况下,通过加密技术保护源代码. 一.为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码.Java的灵活性使得源代码很容易被窃取,但与此同时,它也使通过加密保护代码变得相对容易,我们唯一需要了解的就是Java的ClassLoader对

Java加密技术(一)——BASE64与单向加密算法MD5&amp;amp;SHA&amp;amp;MAC

 加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了.     言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书.     如基本的单向加密算法:  BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) HMAC(Hash Message Authentication Cod

项目中的加密技术

问题描述 问题如题:现在我们项目里面的加密技术是MD5+密钥,但是加密后的密文还是随便放到网上在线解密一下就出来了,经理所要搞个好一点密码方式,让我研究下.我是加密界小白.求各位大神指点啊 解决方案 解决方案二:md5不可逆啊何况你还加了盐(可以用rsa加密算法)解决方案三:当你们经理看你干不了正经事儿的开发,于是给你排一个看上去扫垃圾的脏活儿的时候,其实这类活儿反而不好干.你还不如跟经理申请一个比较正规的开发工作.解决方案四:楼上哥们拐弯骂人,碉堡了.解决方案五:MD5不可逆的,解不出来,网上