服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

哈希(不可逆)加密通用类库函数


  using system;
  using system.io;
  using system.security.cryptography;
  
  namespace common
  {
  /// <summary>
  ///copyright (c), 2004, kwklover(邝伟科)
  ///file name:hasher.cs
  ///author:邝伟科 version:1.0 date:2004年4月22日
  ///description:哈希(不可逆)加密通用类库函数
  /// </summary>
  public class hasher
  {
  private byte[] _hashkey; //哈希密钥存储变量
  private string _hashtext; //待加密的字符串
  public hasher()
  {
  //
  // todo: 在此处添加构造函数逻辑
  //
  }
  
  /// <summary>
  /// 哈希密钥
  /// </summary>
  public byte[] hashkey
  {
  set
  {
  _hashkey=value;
  }
  get
  {
  return _hashkey;
  }
  }
  
  /// <summary>
  /// 需要产生加密哈希的字符串
  /// </summary>
  public string hashtext
  {
  set
  {
  _hashtext=value;
  }
  get
  {
  return _hashtext;
  }
  }
  
  /// <summary>
  /// 使用hmacsha1类产生长度为 20 字节的哈希序列。需提供相应的密钥,接受任何大小的密钥。
  /// </summary>
  /// <returns></returns>
  public string hmacsha1hasher()
  {
  byte[] hmackey=hashkey;
  byte[] hmacdata=system.text.encoding.utf8.getbytes(hashtext);
  
  hmacsha1 hmac = new hmacsha1(hmackey);
  
  cryptostream cs = new cryptostream(stream.null, hmac, cryptostreammode.write);
  cs.write(hmacdata, 0, hmacdata.length);
  cs.close();
  
  byte[] result=hmac.hash;
  
  return convert.tobase64string(result); //返回长度为28字节字符串
  }
  
  /// <summary>
  /// 使用mactripledes类产生长度为 8 字节的哈希序列。需提供相应的密钥,密钥长度可为 8、16 或 24 字节的密钥。
  /// </summary>
  /// <returns></returns>
  public string mactripledeshasher()
  {
  byte[] mackey=hashkey;
  byte[] macdata=system.text.encoding.utf8.getbytes(hashtext);
  
  mactripledes mac=new mactripledes(mackey);
  
  byte[] result=mac.computehash(macdata);
  
  return convert.tobase64string(result); //返回长度为12字节字符串
  }
  
  /// <summary>
  /// 使用md5cryptoserviceprovider类产生哈希值。不需要提供密钥。
  /// </summary>
  /// <returns></returns>
  public string md5hasher()
  {
  byte[] md5data=system.text.encoding.utf8.getbytes(hashtext);
  
  md5 md5=new md5cryptoserviceprovider();
  
  byte[] result=md5.computehash(md5data);
  
  return convert.tobase64string(result); //返回长度为25字节字符串
  }
  
  /// <summary>
  /// 使用sha1managed类产生长度为160位哈希值。不需要提供密钥。
  /// </summary>
  /// <returns></returns>
  public string sha1managedhasher()
  {
  byte[] sha1data=system.text.encoding.utf8.getbytes(hashtext);
  
  sha1managed sha1=new sha1managed();
  
  byte[] result=sha1.computehash(sha1data);
  
  return convert.tobase64string(result); //返回长度为28字节的字符串
  }
  
  /// <summary>
  /// 使用sha256managed类产生长度为256位哈希值。不需要提供密钥。
  /// </summary>
  /// <returns></returns>
  public string sha256managedhasher()
  {
  byte[] sha256data=system.text.encoding.utf8.getbytes(hashtext);
  
  sha256managed sha256=new sha256managed();
  
  byte[] result=sha256.computehash(sha256data);
  
  return convert.tobase64string(result); //返回长度为44字节的字符串
  }
  
  /// <summary>
  /// 使用sha384managed类产生长度为384位哈希值。不需要提供密钥。
  /// </summary>
  /// <returns></returns>
  public string sha384managedhasher()
  {
  byte[] sha384data=system.text.encoding.utf8.getbytes(hashtext);
  
  sha384managed sha384=new sha384managed();
  
  byte[] result=sha384.computehash(sha384data);
  
  return convert.tobase64string(result); //返回长度为64字节的字符串
  }
  
  /// <summary>
  /// 使用sha512managed类产生长度为512位哈希值。不需要提供密钥。
  /// </summary>
  /// <returns></returns>
  public string sha512managedhasher()
  {
  byte[] sha512data=system.text.encoding.utf8.getbytes(hashtext);
  
  sha512managed sha512=new sha512managed();
  
  byte[] result=sha512.computehash(sha512data);
  
  return convert.tobase64string(result); //返回长度为88字节的字符串
  }
  }
  }

扫描关注微信公众号