邪风戏雨

青斗笠,绿蓑衣,斜风细雨不须归。

导航

《加密-笔记一》

Posted on 2004-12-02 20:14  fdreg  阅读(676)  评论(0)    收藏  举报

简化加密(MSDN) 
散列-
散列是一种单向算法,一旦数据被转换,将无法再获得其原始值。SHA1 和 MD5.
SHA1 :

import System.Security.Cryptography
Private Sub HashText(ByVal TextToHash As String)
  
Dim SHA1 As SHA1CryptoServiceProvider
  
Dim bytValue() As Byte
  
Dim bytHash() As Byte

  
' 创建新的加密服务提供程序对象
  SHA1 = New SHA1CryptoServiceProvider

  
' 将原始字符串转换成字节数组
  bytValue = _
   System.Text.Encoding.UTF8.GetBytes(TextToHash)

  
' 计算散列,并返回一个字节数组
  bytHash = SHA1.ComputeHash(bytValue)

  SHA1.Clear()

  
' 返回散列值的 Base64 编码字符串
  Debug.WriteLine(Convert.ToBase64String(bytHash))
End Sub


MD5

import CryptoServiceProvider

Private Sub HashTextMD5(ByVal TextToHash As String)
  
Dim md5 As MD5CryptoServiceProvider
  
Dim bytValue() As Byte
  
Dim bytHash() As Byte

  
' 创建新的加密服务提供程序对象
  md5 = New MD5CryptoServiceProvider

  
' 将原始字符串转换成字节数组
  bytValue = System.Text.Encoding. _
   UTF8.GetBytes(TextToHash)

  
' 计算散列,并返回一个字节数组
  bytHash = md5.ComputeHash(bytValue)

  md5.Clear()

  
' 返回散列值的 Base64 编码字符串
  Debug.WriteLine(Convert.ToBase64String(bytHash))
End Sub


区别:
1、MD5 使用的加密密钥比 SHA1 使用的密钥大,因此 MD5 散列较难破解。
2、SHA1 从实践或理论上来讲没有发生冲突的可能性。MD5 从理论上讲有发生冲突的可能性。

“盐”值

盐值也可以为您提供一层额外的安全保护。使用 .NET Framework 类 RNGCryptoServiceProvider 创建一个随机的数字字符串。RNG 表示随机数生成器。该类可以创建一个任意长度的随机字节数组,长度可以被指定。
  方法例子:

using  RNGCryptoServiceProvider ;

private string CreateSalt()
{
  
byte[] bytSalt = new byte[8];
  RNGCryptoServiceProvider rng;

  rng 
= new RNGCryptoServiceProvider();

  rng.GetBytes(bytSalt);

  
return Convert.ToBase64String(bytSalt);
}


根据盐值&口令一道提交加密。