知识大全 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加密算法加密你的数据

使用ASP加密算法加密你的数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简介    首先简

知识大全 java中使用MD5加密算法进行加密

java中使用MD5加密算法进行加密  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在各种应用系

知识大全 Oracle数据库替代加密算法

Oracle数据库替代加密算法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  替代密码算法的原理

知识大全 C#对称加密解密算法

C#对称加密解密算法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ///<summary

知识大全 C# 对称算法,加密解密类

C#对称算法,加密解密类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  模块编号 &n

知识大全 JAVA里面RSA加密算法的使用

JAVA里面RSA加密算法的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  打算写这个类用于

知识大全 JAVA版MD5加密算法

JAVA版MD5加密算法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  packagesf_md

知识大全 利用DES加密算法保护Java源代码

利用DES加密算法保护Java源代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java语言

知识大全 Java技术进阶 基于Java的IDEA加密算法探讨

Java技术进阶基于Java的IDEA加密算法探讨  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Java中常用的加密算法MD5,SHA,RSA

Java中常用的加密算法MD5,SHA,RSA  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  M