.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算法 ...
随机推荐
- PowerDesigner Comment与Name相互替换
从name替换comment Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl ' the curren ...
- 菜鸟的Xamarin.Forms前行之路——实现按钮的字体图标(可扩展)
在实际的APP中,带有图标的按钮用到地方还是蛮多的,字体图标往往能更快更生动的传达信息,并且相对于背景图片,字体图标也有着绝对的优势,所以实现按钮的字体图标是值得尝试的. 实现方法:各平台自定义渲染按 ...
- 《Beginning Java 7》 - 6 - 深入理解 String
public final class String implements Serializable, Comparable<String>, CharSequence 所以: 1. Str ...
- (1)python的基础认知
Python程序员的信仰:人生苦短,我用python! (一)python的发展史 1989年开发的语言,创始人范罗苏姆(Guido van Rossum),别称:龟叔(Guido).为了打发圣诞节假 ...
- HTML中DOM元素的子节点为空?!firstChild, lastChild, childeNodes[]为空
- “全栈2019”Java第二十六章:流程控制语句中循环语句do-while
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- kali linux之拒绝服务攻击工具
hping3 几乎可以定制发送任何TCP/IP数据包,用于测试FW,端口扫描,性能测试 -c - 计数包计数 -i - interval wait(uX表示X微秒,例如-i u1000) ...
- 【CF453D】 Little Pony and Elements of Harmony(FWT)
题面 传送门 设\(a\)的递推公式为 \[a_i=\sum_ja_jb[count(i\oplus j)]\] 其中\(\oplus\)为异或,\(count(i)\)表示\(i\)的二进制中\(1 ...
- QTREE5 - Query on a tree V(LCT)
题意翻译 你被给定一棵n个点的树,点从1到n编号.每个点可能有两种颜色:黑或白.我们定义dist(a,b)为点a至点b路径上的边个数. 一开始所有的点都是黑色的. 要求作以下操作: 0 i 将点i的颜 ...
- (php脚本自研分享)•通用型保存网站用户密码到css文件
本文原创作者:Laimooc(原名xoanHn) 很多时候呢,我们拿到一个shell以后,偶尔会遇到密码解不了的情况,用xss收集cookie吧,感觉不方便:利用xss平台劫持表单吧,感觉麻烦,也会担 ...