.NET加密技术概述
微软.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加密技术概述的更多相关文章
- Windows加密技术概述
Windows加密是安全体系的重要基础和组成部分.现代CPU的保护模式是系统安全的硬件基石,基于CPU硬件的特权分级,Windows让自身的关键系统代码运行在高处理器特权级的内核模式,各种应用程序则运 ...
- IM-即时通讯技术概述
IM-即时通讯技术概述 简述 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容.大多数常用的即时通讯发 ...
- android 数据加密——加密的概述
数据加密又称密码学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文.数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法.它利 ...
- PHP加密技术
一.MD5加密 直接干,这里以一个登录页面为例: <?php require_once 'config/database.config.php'; $act=$_REQUEST['act']; ...
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha 加密解密,曾经是我一 ...
- 斯诺登称NSA攻破互联网加密技术
据财新网报道,本已渐渐平静的斯诺登泄密事件在9月6日再掀波澜.英国<卫报>.美国<纽约时报>和美国非盈利调查新闻机构ProPublica联合报道称,根据斯诺登提供的大量文件,美 ...
- 运用加密技术保护Java源代码/定制ClassLoader
为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码 ...
- (转)Eclipse平台技术概述
转载:周金根 http://zhoujg.blog.51cto.com/1281471/516833 Eclipse:Eclipse平台技术概述 2010-10-19 13:35:00 标签:E ...
- Java加密技术
相关链接: Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC Java加密技术(二)——对称加密DES&AES Java加密技术(三)——PBE算法 ...
随机推荐
- 《Beginning Java 7》 - 4 - finalize() 手动垃圾回收
当我们想在系统进行垃圾回收时做一些特定的工作,我们就可以重写 finalze() 函数,因为 Object 的 此函数是空的. 比如: protected void finalize() throws ...
- jQuery动态数字翻滚计数到指定数字的文字特效代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- RDLC报表的相关技巧二(主从报表)
为了广泛支持客户端,系统框架运行在.Net Framework 4.0之上,Report viewer的版本也限制在11.0.3366.16. 使用NUGET安装Microsoft.ReportVie ...
- 如何从svn下载以前的项目版本
showlog 你的项目,找到最老的log的版本号,然后svn co -r 最老的log的版本号 项目地址
- Ionic无法通过npm安装解决方案
http://www.jianshu.com/p/5a99334eb62d 一般从 node.js官网下载安装完之后,npm也会同时安装完. 如果通过 $ npm install -g cordova ...
- Azure Powershell获取Azure虚拟机的操作系统型号及具体版本
Azure ARM 模式虚拟机: 1.登陆Azure账号 Add-AzureRmAccount -EnvironmentName AzurechinaCloud 2.选择指定订阅 Select-Azu ...
- python学习,day2:利用列表做购物车实例
一个购物车 # coding=utf-8 # Author: RyAn Bi import sys , os goods = [['iphone',5800],['mate20pro',5000],[ ...
- 九校联考(DL24凉心模拟) 整除(中国剩余定理+原根性质)
题意简述 给定 \(n, m\),求 \(n|x^m - x\) 在满足 \(x \in [1, n]\) 时合法的 \(x\) 的数量.答案模 \(998244353\).单个测试点包含多组数据. ...
- Bowen
Advertise Window大小 注册表键值位于:regedit->HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Pa ...
- Flutter Navigator operation requested with a context that does not include a Navigat
如下直接在 MaterialApp 中使用 Navigator 是会报 Navigator operation requested with a context that does not inclu ...