.NET中的加解密和数字签名

来源:互联网 发布:highlight.js 行号 编辑:程序博客网 时间:2024/06/14 22:09

获取数字证书

获取数字证书有三种方法,一是从CA机构申请,二是自己搭建服务器发布证书,三是使用makecert.exe来生成一个证书文件。这里我们使用makecert.exe来生成一个证书文件,用来测试。启动VS2010的命令行,输入对应参数,生成名为TestCertificates的证书文件

-sr CurrentUser:指定主题的证书存储位置。Location 可以是 currentuser(默认值)或 localmachine

-ss MyTestContainer:指定主题的证书存储名称,输出证书即存储在那里。

-n CN=TestCert:指定主题的证书名称。此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。

-sky exchange:指定颁发者的密钥类型,必须是 signature、exchange 或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥。

-pe:将所生成的私钥标记为可导出。这样可将私钥包括在证书中。


我们可以在MMC控制台添加证书的管理界面:

  1. 开始->运行->MMC,打开一个空的MMC控制台。
  2. 在控制台菜单,文件->添加/删除管理单元->添加按钮->选"证书"->添加->选"我的用户账户" ->关闭->确定
  3. 在控制台菜单,文件->添加/删除管理单元->添加按钮->选"证书"->添加->选"计算机账户" ->关闭->确定

使用SHA-1或者MD5算法做数据完整性效验

私钥加密:

    用一个私钥(key)加密,然后再用该私钥解密,验证是否一致  私钥加密,是对称加密 使用对称算法。比如:A用一个密钥对一个文件加密,而B读取这个文件的话,则需要和A一样的密钥,双方共享个私钥,主要算法有:DES,AES

公钥加密

    一对钥匙,可以相互解密,用一个私钥(key)加密,然后再用公钥解密,或用一个公钥加密,然后再用私钥解密主要算法有RSA

数字签名:

  1. 使用RSA私钥对原始数据进行签名,然后使用公钥验证签名
  2.  A通过使用B的公钥加密数据后发给B,B利用B的私钥解密就得到了需要的数据(进过B公钥加密的数据只有B的私钥能够解开,C没有B的私钥,所以C解不开,但C可以使用B的公钥加密一份数据发给B,这样一来,问题来了,B收到的数据到底是A发过来的还是C发过来的呢,由于私钥是唯一的,那么A就可以利用A自己的私钥进行加密,然后B再利用A的公钥来解密,就可以确定:一定是A的消息,数字签名的原理就基于此
  3.   * 总结:A想将目标数据传给B,此时A需要准备1和2两部分   1:A使用B的公钥将原始信息加密,以起到保密作用(只有B的私钥能解开,其他人使用其他钥匙都解不开,当然就保密咯) 2:A使用A的私钥将原始信息的摘要进行签名,以起到接收方B确定是A发过来的作用(A用A的私钥对目标数据的摘要进行签名,然后传给B,同时,C用C的私钥对任意信息进行签名也传给B,B想接受的是A的数据(比如说一个转帐请求),于是B就通过A的公钥对接受到的两个信息进行解密,解开的就是A(A的公钥能且只能解开A的私钥加密的数据))
数字证书 :


0 0