以MD5的方式,sha1 生成散列 加密指定字符串


  #region 以MD5的方式加密指定字符串

  //*********************************************************************
  //
  // Security.Encrypt() Method
  //
  // The Encrypt method encrypts a clean string into a hashed string
  //
  //*********************************************************************

  /// <summary>
  /// 以MD5的方式加密指定字符串
  /// </summary>
  /// <param name="cleanString"></param>
  /// <returns></returns>
  public static string Encrypt(string cleanString)
  {
   Byte[] clearBytes = new UnicodeEncoding().GetBytes(cleanString);
   Byte[] hashedBytes = ((HashAlgorithm) CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);
   
   return BitConverter.ToString(hashedBytes);
  }

  #endregion

 

.net 开发人员可以使用多种散列算法类。最常用的是 sha1 和 md5。下面我们看一下如何为“paul”这样的普通字符串生成散列,使任何人都无法识别它。

使用 sha1 生成散列

我们创建一个新例程,然后使用它为字符串“paul”生成散列。在 visual studio® .net 中打开一个新的 windows 应用程序,在窗体上放置一个命令按钮。当该命令按钮上发生 click 事件时,将调用名为 hashtext() 的方法。您可以将以下代码添加到该窗体中,看一下此散列算法的实际效果。编写下列代码之前,需要导入命名空间 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

您可以传递不同的字符串值来调用该例程,查看散列值的变化。例如,如果将字符串“paul”传递给该例程,debug(调试)窗口将显示以下文本:

w2h6uygmjt/nq5zqihcbteaxwv8=

现在,将此过程中的输入值更改为“pauly”。您将看到以下输出结果:

proywxj0znmpgf5sbb18+7gsasm=

如您所见,输入字符串的一个小小变化就会产生完全不同的字符组合。这正是散列算法之所以有效的原因,它使我们很难找到输入字符串的规律,也很难根据加密后的字符弄清楚字符串原来的模样。

使用 md5 也可以生成散列

了解一种散列类的使用方法后,基本上就了解了所有的散列类。下面的方法用于 md5 散列算法。注意,除了 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值