知识大全 VB.NET关于加密算法
Posted 知
篇首语:事常与人违,事总在人为。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 VB.NET关于加密算法相关的知识,希望对你有一定的参考价值。
VB.NET关于加密算法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
前几天由于需要 去研究了一下加密算法!这里是一些资料! 分享下
加密将防止数据被查看或修改 并在原本不安全的信道上提供安全的通信信道 它达到以下目的
保密性 防止用户的标识或数据被读取
数据完整性 防止数据被更改
身份验证 确保数据发自特定的一方
基本概念
散列(HASH)函数
散列(HASH)函数H也称哈希函数或杂凑函数等 是典型的多到一的函数 其输入为一可变长x(可以足够的长) 输出一固定长的串h(一般为 位 位 比输入的串短) 该串h被称为输入x的Hash值(或称消息摘要Message Digest 指纹 密码校验和或消息完整性校验) 计作h=H(x) 为防止传输和存储的消息被有意或无意地篡改 采用散列函数对消息进行运算生成消息摘要 附在消息之后发出或与信息一起存储 它在报文防伪中具有重要应用
消息摘要采用一种单向散列算法将一个消息进行换算 在消息摘要算法中 文件数据作为单向散列运算的输入 这个输入通过HASH函数产生一个散列值 如果改动了文件 散列值就会相应地改变 接收者即能检测到这种改动过的痕迹 从理论上来讲 攻击者不可能制造一个替用的消息来产生一个完全相同的消息摘要 Hash函数可用于数字签名 消息的完整性检测 消息的起源认证检测等
散列函数是安全的是指它具有
一致性 相同的输入产生相同的输出
随机性 消息摘要外观是随机的 以防被猜出源消息
唯一性 几乎不可能找到两个消息产生相同的消息摘要
单向性 即如果给出输出 则很难确定出输入消息
Hash函数H一般满足以下几个基本要求
( )输入x可以为任意长度 输出数据串长度固定
( )正向计算容易 即给定任何x 容易算出H(x) 反向计算困难 即给出一Hash值h 很难找出一特定输入x 使h=H(x)
( )抗冲突性(抗碰撞性) 包括两个含义 一是给出一消息x 找出一消息y使H(x)=H(y)是计算上不可行的(弱抗冲突) 二是找出任意两条消息x y 使H(x)=H(y)也是计算上不可行的(强抗冲突)
私钥加密
私钥加密又称为对称加密 因为同一密钥既用于加密又用于解密 私钥加密算法非常快(与公钥算法相比) 特别适用于对较大的数据流执行加密转换
公钥加密(PKCS)和数字签名
公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥 用公钥加密的数据只能用私钥解密 而用私钥签名的数据只能用公钥验证 公钥可以被任何人使用 该密钥用于加密要发送到私钥持有者的数据 两个密钥对于通信会话都是唯一的 公钥加密算法也称为不对称算法 原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据
数据加密/编码算法列表
常见用于保证安全的加密或编码算法如下
常用密钥算法
密钥算法用来对敏感数据 摘要 签名等信息进行加密 常用的密钥算法包括
DES(Data Encryption Standard) 数据加密标准 速度较快 适用于加密大量数据的场合
DES(Triple DES) 是基于DES 对一块数据用三个不同的密钥进行三次加密 强度更高
RC 和 RC 用变长密钥对大量数据进行加密 比 DES 快
IDEA(International Data Encryption Algorithm)国际数据加密算法 使用 位密钥提供非常强的安全性
RSA 由 RSA 公司发明 是一个支持变长密钥的公共密钥算法 需要加密的文件快的长度也是可变的
DSA(Digital Signature Algorithm) 数字签名算法 是一种标准的 DSS(数字签名标准)
AES(Advanced Encryption Standard) 高级加密标准 是下一代的加密算法标准 速度快 安全级别高 目前 AES 标准的一个实现是 Rijndael 算法
BLOWFISH 它使用变长的密钥 长度可达 位 运行速度很快
其它算法 如ElGamal Deffie Hellman 新型椭圆曲线算法ECC等
单向散列算法
单向散列函数一般用于产生消息摘要 密钥加密等 常见的有
MD (Message Digest Algorithm ) 是RSA数据安全公司开发的一种单向散列算法 MD 被广泛使用 可以用来把不同长度的数据块进行暗码运算成一个 位的数值
SHA(Secure Hash Algorithm)这是一种较新的散列算法 可以对任意长度的数据运算生成一个 位的数值
MAC(Message Authentication Code) 消息认证代码 是一种使用密钥的单向函数 可以用它们在系统上或用户之间认证文件或消息 HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子
CRC(Cyclic Redundancy Check) 循环冗余校验码 CRC校验由于实现简单 检错能力强 被广泛使用在各种数据校验应用中 占用系统资源少 用软硬件均能实现 是进行数据传输差错检测地一种很好的手段(CRC 并不是严格意义上的散列算法 但它的作用与散列算法大致相同 所以归于此类)
其它数据算法
其它数据算法包括一些常用编码算法及其与明文(ASCII Unicode 等)转换等 如 Base Quoted Printable EBCDIC 等
算法的 NET 实现
常见的加密和编码算法都已经在 NET Framework中得到了实现 为编码人员提供了极大的便利性 实现这些算法的名称空间是 System Security Cryptography
System Security Cryptography 命名空间提供加密服务 包括安全的数据编码和解码 以及许多其他操作 例如散列法 随机数字生成和消息身份验证
System Security Cryptography 是按如下方式组织的
私钥加密
私钥加密又称为对称加密 因为同一密钥既用于加密又用于解密 私钥加密算法非常快(与公钥算法相比) 特别适用于对较大的数据流执行加密转换
NET Framework 提供以下实现私钥加密算法的类
DES DESCryptoServiceProvider
RC RC CryptoServiceProvider
Rijndael(AES) RijndaelManaged
DES TripleDESCryptoServiceProvider
公钥加密和数字签名
公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥 用公钥加密的数据只能用私钥解密 而用私钥签名的数据只能用公钥验证 公钥可以被任何人使用 该密钥用于加密要发送到私钥持有者的数据 两个密钥对于通信会话都是唯一的 公钥加密算法也称为不对称算法 原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据
NET Framework 提供以下实现公钥加密算法的类
DSA DSACryptoServiceProvider
RSA RSACryptoServiceProvider
哈希(Hash)值
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值 这个小的二进制值称为哈希值 哈希值是一段数据唯一且极其紧凑的数值表示形式 如果散列一段明文而且哪怕只更改该段落的一个字母 随后的哈希都将产生不同的值 要找到散列为同一个值的两个不同的输入 在计算上是不可能的 所以数据的哈希值可以检验数据的完整性
NET Framework 提供以下实现数字签名算法的类
HMAC HMACSHA (HMAC 为一种使用密钥的 Hash 算法)
MAC MACTripleDES
MD MD CryptoServiceProvider
SHA SHA Managed SHA Managed SHA Managed SHA Managed
随机数生成
加密密钥需要尽可能地随机 以便使生成的密钥很难再现 所以随机数生成是许多加密操作不可分割的组成部分
在 NET Framework 中 RNGCryptoServiceProvider 是随机数生成器算法的实现 对于数据算法 NET Framework 则在其它命名空间中实现 如 Convert 类实现 Base 编码 System Text 来实现编码方式的转换等
简单的例程
首先需要引用命名空间System Security Cryptography
MD 加密
Dim md As MD CryptoServiceProvider
Dim bytValue() As Byte 要进行加密的字节数组
Dim bytHash() As Byte 加密后生成的字节数组
Dim result As String
md = New MD CryptoServiceProvider
将原始字符串转换成字节数组
bytValue = System Text Encoding UTF GetBytes(cpuid)
计算散列 并返回一个字节数组
bytHash = md ComputeHash(bytValue)
md Clear()
字节数组转换成字符串
result=Convert ToBase String(bytHash)
其他的也是类似的!可以自己去尝试下的!
cha138/Article/program/net/201311/13807相关参考
使用ASP加密算法加密你的数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 简介 首先简
java中使用MD5加密算法进行加密 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在各种应用系
Oracle数据库替代加密算法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 替代密码算法的原理
C#对称加密解密算法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ///<summary
C#对称算法,加密解密类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 模块编号 &n
JAVA里面RSA加密算法的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 打算写这个类用于
JAVA版MD5加密算法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! packagesf_md
利用DES加密算法保护Java源代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java语言
知识大全 Java技术进阶 基于Java的IDEA加密算法探讨
Java技术进阶基于Java的IDEA加密算法探讨 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java中常用的加密算法MD5,SHA,RSA 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! M