概述:

数字签名和加密依赖于相应的加密算法

  自变量:加密前的数据、密钥

  因变量:加密后的数据

加密算法分类:根据加密和解密这两种步骤采用的密钥的是否相同进行分类

  相同:对称加密

  不相同:非对称加密

非对称加密的应用场景:

  (1)通过对消息进行加密解决机密性问题(消息的内容仅对发送者期望的接收者可见)

  (2)通过数字签名实现身份认证和数据一致性

1.消息加密

非对称加密:公钥/私钥

2.数字签名

签名:

(1)发送方采用某种算法对整个消息的内容实施哈希计算,得到一个哈希码

(2)发送发使用自己的私钥对该哈希码进行加密,加密后得到的密文就是数字签名

(3)将数字签名和密钥对中的公钥附加到源消息上

(4)将附加的源消息发送给接收方

检验:

(1)提取源消息,将源消息通过相同的哈希算法得到一个哈希码

(2)提取数字签名和公钥,将数字签名通过公钥进行解密,得到申城数字签名的那个哈希码

(3)两个哈希码进行比较,如果一致,则可以证明数字签名的有效性及消息本身的完整性。

数字签名的作用:

(1)身份认证

确认消息的发送源是否是私钥的正真正拥有者

(2)防止抵赖

如果接收方采用某个实体的公钥对数字签名检验成功,那么这个实体就是消息的发送方,不允许对方抵赖。因为能够通过公钥对某个数字签名成功检验,证明生成该数字签名使用的是正确的私钥。

(3)消息一致性

消息的内容一旦出现任何改变,最终对数字签名的检验都将失败。

3.数字证书

(1)公钥一般情况下是通过数字证书的形式进行传递的,数字证书在这里作为发送方的凭证。

(2)数字证书将公钥值绑定到持有对应私钥的个人、设备或服务的标识信息上。

(3)大多数证书基于X.509 V3证书标准,所以称作X.509证书。

(4)X.509证书应用于加密和数字签名,以提供认证的实现和确保数据的一致性和机密性。

(5)X.509证书就是一个将某个密钥中的公钥与某个主题进行绑定的文件。

(1)数字证书的颁发机制

对于数字证书,尤其是用于商业用途的数字郑虎,也具有相应的官方颁发机构,我们这样机构称为认证权威机构(CA)。

(2)创建数字证书

用户对数字证书的认可取决于对证书颁发机构的信息,所以证书颁发机构决定了数字证书的可用范围。

对于学习研究或者开发测试,没有必要去购买这些商用证书,可以利用一些工具以手动的方式创建证书。

  MakeCert.exe

    -n x509name:指定证书的主题名称。"CN=My Name"

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

    -sr location:数字证书的存储位置,具有CurrentUser和LocationMachine两个可选之。前者基于当前登录用户,后者基于本机。

    -ss store:数字证书的存储区。

    -sky keytype:指定密钥类型,必须是signature、exchange或一个标识提供程序类型的证书(1标识交换密钥,2标识签名密钥)。

通过下面的命令会创建一个主题名称为www.artech.com的数字证书,密钥类型为交换密钥,并且包含私钥。

WCF安全2-非对称加密的更多相关文章

  1. RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密

    最近换了一份工作,工作了大概一个多月了吧.差不多得有两个月没有更新博客了吧.在新公司自己写了一个iOS的比较通用的可以架构一个中型应用的不算是框架的一个结构,并已经投入使用.哈哈 说说文章标题的相关的 ...

  2. 个人理解c#对称加密 非对称加密 散列算法的应用场景

    c#类库默认实现了一系列加密算法在System.Security.Cryptography; 命名空间下 对称加密 通过同一密匙进行加密和解密.往往应用在内部数据传输情况下.比如公司a程序 和B程序 ...

  3. XP机器上WCF采用X509证书加密时IIS读取证书的授权

    XP机器上WCF采用X509证书加密时IIS读取证书的授权 XP下的授权命令为:winhttpcertcfg -g -c LOCAL_MACHINE\My -s 证书名称 -a "ASPNE ...

  4. 介绍DSA数字签名,非对称加密的另一种实现

    接下来我们介绍DSA数字签名,非对称加密的另一种实现. DSA DSA-Digital Signature Algorithm 是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS ...

  5. 非对称加密RSA的应用及在C#中的实现

    quote: http://www.cnblogs.com/happinessCodes/archive/2010/07/27/1786404.html   一说到数据的加密,常常会涉及到这几个单词: ...

  6. Atitit RSA非对称加密原理与解决方案

    Atitit RSA非对称加密原理与解决方案 1.1. 一.一点历史 1 1.2. 八.加密和解密 2 1.3. 二.基于RSA的消息传递机制  3 1.4. 基于rsa的授权验证机器码 4 1.5. ...

  7. 和安全有关的那些事(非对称加密、数字摘要、数字签名、数字证书、SSL、HTTPS及其他)

    转自http://blog.csdn.net/bluishglc/article/details/7585965 对于一般的开发人员来说,很少需要对安全领域内的基础技术进行深入的研究,但是鉴于日常系统 ...

  8. ssl原理,非对称加密握手,对称加密传输

    SSL的基本思想是用非对称加密来建立链接(握手阶段),用对称加密来传输数据(传输阶段).这样既保证了密钥分发的安全,也保证了通信的效率. SSL握手,单方服务器认证(一般的浏览器上网) SSL握手,双 ...

  9. OpenSSL - RSA非对称加密实现

    非对称加密:即两端使用一对不同的密钥进行加密. 在非对称加密中,需要两对密钥,公钥和私钥. 公钥个私钥属于对立关系,一把加密后,只有另一把才可以进行解密. 公钥数据加密 数字证书内包含了公钥,在进行会 ...

  10. php使用openssl来实现RSA(非对称加密)

    使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密. 1.安装openssl和PHP的openssl扩展 2.生成私钥:openssl genrsa 用于生成 ...

随机推荐

  1. Maven学习总结(三)——使用Maven构建项目

    maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程. 一.构建Java项目 1.1.创建Java Project 1.使用mvn archet ...

  2. Java并发包中Lock的实现原理

    1. Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制.本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\l ...

  3. bind() live()和delegate 区别

    Event bubbling (aka event propagation)冒泡 我们的页面可以理解为一棵DOM树,当我们在叶子结点上做什么事情的时候(如click一个a元素),如果我们不人为的设置s ...

  4. web应用程序 ---- 日志系统的设计

    最近在做一个小的项目,是web的应用程序,最近也有点时间,把日志管理来简单的说说. 日志,就是需要记录一些自己感兴趣的信息,把它保存起来,具体保存在哪里?保存多长时间?这些要求都是根据不同的项目需求而 ...

  5. 推荐--《Android深入浅出》

    基本信息 书名:Android深入浅出 作者:张旸 著 页数: 661 出版社: 机械工业出版社; 第1版 (2014年4月17日) 语种: 简体中文 ASIN: B00JR3P8X0 品牌: 北京华 ...

  6. 在redis一致性hash(shard)中使用lua脚本的坑

    redis 2.8之前的版本,为了实现支持巨量数据缓存或者持久化,一般需要通过redis sharding模式来实现redis集群,普遍大家使用的是twitter开源的Twemproxy. twemp ...

  7. VirtualBox不能为虚拟电脑 Ubuntu 打开一个新任务

    今天在用Vbox中的Ubuntu系统准备测试Python代码时,Vbox报了一个错误:"不能为虚拟电脑 Ubuntu 打开一个新任务".因为之前用的时候还好好的,也不知道是不是最近 ...

  8. 菜鸟教程之工具使用(十二)——Eclipse突出显示选中的相同变量

    大家都知道在Eclipse中,选中一个变量或者方法名(或者说是一个单词),当前文件中跟他一样的变量会被突出显示,这个功能很好用.能让我们很方便的找到该变量在哪被用到了.前段时间我的Eclipse的这个 ...

  9. tooltip提示插件

    tooltip提示信息插件 原理:定位元素在页面中的位置即坐标信息,将显示节点元素插入到body中绝对应为到相应位置,显示内容从指定元素的属性(dataMess)中获取或者通过设置获取. 使用方法: ...

  10. Android NDK 同时编译多个Module

    LOCAL_PATH := $(call my-dir) ## ## NDK 支持同时编译多个Module: ## 在配置的时候,每个Module需要 以 include $(CLEAR_VARS)开 ...