微软.NET 的System.Security.Cryptography中的类实现了各种具体的加密算法和技术。这些类,有一些是非托管 Microsoft CryptoAPI 的包装,而另一些则是纯粹的托管实现。在创建一个加密算法类的新实例时,会自动生成密钥以便于使用,并且默认配置属性总是倾向于尽可能强的安全性。.NET系统加密类库有着以下一些基本的技术特性。

对象继承

.NET框架以抽象类的形式定义了提供加密服务的类的基本形态,以这些抽象类为基类,.NET类库以派生继承的方式,实现了一系列具体的加密算法。其层次如下:

最基础的是算法类型类,例如 SymmetricAlgorithm 或 HashAlgorithm。该级别为抽象。

其次是从算法类型类继承的特定类型的算法类,例如 RC2 或 SHA1。该级别为抽象。

最后从特定类型的算法类继承的算法实现,例如 RC2CryptoServiceProvider 或 SHA1Managed。该级别是完全实现的。

基于这一加密算法的类层次,很容易添加新算法或现有算法的新实现。例如,要创建新的公钥算法,则应从 AsymmetricAlgorithm 类继承。若要创建特定算法的新实现,如重新实现SHA1算法,则应继承SHA1类来实现。

面向流的设计

.NET加密类库使用面向流的设计实现了对称算法和哈希算法。其核心是 CryptoStream 类,它派生自 Stream 类。基于流的加密对象全都支持用于处理对象的数据传输部分的单个标准接口 (CryptoStream)。由于所有对象都具备标准接口,所以可以将多个CryptoStream对象(如一个哈希对象后跟一个加密对象)链接在一起,并且可以对数据依次序连续进行加密处理而无需提供任何中间缓冲区。使用流模型时还可以用基本的加密流对象组合成复杂的面向特定应用的加密流对象。例如,可以将加密算法和哈希算法组合成单个流对象。

加密配置

使用加密配置可以将算法名称解析到算法的特定实现,从而使 .NET Framework 加密类具有可扩展性。用户可以基于此添加自己的硬件或软件算法实现,并将该实现映射到相应的算法名称上。如果未在配置文件中指定算法配置,则会使用默认设置。

.NET加密技术概述的更多相关文章

  1. Windows加密技术概述

    Windows加密是安全体系的重要基础和组成部分.现代CPU的保护模式是系统安全的硬件基石,基于CPU硬件的特权分级,Windows让自身的关键系统代码运行在高处理器特权级的内核模式,各种应用程序则运 ...

  2. IM-即时通讯技术概述

    IM-即时通讯技术概述 简述 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容.大多数常用的即时通讯发 ...

  3. android 数据加密——加密的概述

    数据加密又称密码学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文.数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法.它利 ...

  4. PHP加密技术

    一.MD5加密 直接干,这里以一个登录页面为例: <?php require_once 'config/database.config.php'; $act=$_REQUEST['act']; ...

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

    Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha     加密解密,曾经是我一 ...

  6. 斯诺登称NSA攻破互联网加密技术

    据财新网报道,本已渐渐平静的斯诺登泄密事件在9月6日再掀波澜.英国<卫报>.美国<纽约时报>和美国非盈利调查新闻机构ProPublica联合报道称,根据斯诺登提供的大量文件,美 ...

  7. 运用加密技术保护Java源代码/定制ClassLoader

    为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码 ...

  8. (转)Eclipse平台技术概述

    转载:周金根 http://zhoujg.blog.51cto.com/1281471/516833    Eclipse:Eclipse平台技术概述 2010-10-19 13:35:00 标签:E ...

  9. Java加密技术

    相关链接: Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC Java加密技术(二)——对称加密DES&AES Java加密技术(三)——PBE算法  ...

随机推荐

  1. 纸壳CMS(ZKEACMS)体验升级,快速创建页面,直接在页面中修改内容

    关于纸壳CMS 纸壳CMS又名 ZKEACMS Core 是ZKEACMS的 .net core 版本,可运行在 .net core 1.1 平台上.是一个开源的CMS. 纸壳CMS对于 ZKEACM ...

  2. better-scroll在vue中的应用

    在我们日常的移动端项目开发中,处理滚动列表是再常见不过的需求了,以滴滴为例,可以是这样竖向滚动的列表,如图所示: 微信 —> 钱包—>滴滴出行”体验效果. 什么是 better-scrol ...

  3. 【bzoj4887】:[Tjoi2017]可乐 矩阵乘法,快速幂

    [bzoj4887]:[Tjoi2017]可乐 题目大意:一张无相连通图(n<=30),从1号点开始走,每秒可以走到相邻的点也可以自爆,求第t秒(t<=1e6)后所有的方案数是多少对201 ...

  4. codeforces785E

    http://codeforces.com/contest/785/problem/E 一道经典的求逆序对的题目,可以用树状数组套平衡树解决 平衡树需要支持插入一个数,删除一个数,找比 x 小的数的个 ...

  5. Python多继承的C3算法

    C3算法 一.知识点补充: 拓扑排序:在图论中,拓扑排序(Topological Sorting) 是一个 有向无环图(DAG,Directed Acyclic Graph) 的所有顶点的线性序列.且 ...

  6. Linux一些常用的基础命令,总结的很好,收藏了

    原文地址:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html

  7. 某个js插件没有执行

    今天遇到一个奇怪的问题,bootstrap-table插件根本没有执行.后来发现用于执行bootstrap启动的js文件出错.导致这个不能顺利执行错误js中的程序.一般导致插件不能顺利执行有两个原因. ...

  8. 2016级算法第二次上机-A.画个圈圈诅咒你

    890 画个圈圈诅咒你 思路 简单题.题目中的圆并没有什么实际作用,简化成线段重合问题会更好理解些. 暴力解法:使用双重for循环会T到想哭,记住最直接的方法一般是过不了题的. 解法一:二分查找.空间 ...

  9. Bootrap 项目实战(微金所前端首页)第三部分(CSS,js源码)

    CSS源码 common.css /** *Created by xxc on 2019/2/26 */ body, html, div, img, a, p, ul, ol, dl, dd, dt, ...

  10. Educational Codeforces Round 58 (Rated for Div. 2)

    A. Minimum Integer 水 #include<bits/stdc++.h> #define clr(a,b) memset(a,b,sizeof(a)) using name ...