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字节的字符串
  }
 }
}

转载于:https://www.cnblogs.com/kwklover/archive/2004/06/22/17815.html

哈希(不可逆)加密通用类库函数相关推荐

  1. day011--mysql中的不可逆加密函数,信息函数及转换函数

    目录 一,不可逆的加密函数 1,md5(str)及sha(str) 二,信息函数 三,转换函数 一,不可逆的加密函数 1,md5(str)及sha(str) mysql8中所支持的加密函数不多,就两个 ...

  2. 不可逆加密:说一下你常用的加密算法

    加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密. 一.不可逆加密 常见的不可逆加密算法有MD5,HMAC,SHA1.SHA-224.SHA-256.SHA-3 ...

  3. 可逆加密和不可逆加密

    加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密. 一.不可逆加密 常见的不可逆加密算法有MD5,HMAC,SHA1.SHA-224.SHA-256.SHA-3 ...

  4. JS加密,JS混淆,JS混淆加密,JS不可逆加密,JS加密压缩

    分享一个JavaScript加密,JS加密,JS混淆,JS混淆加密,JS不可逆加密,JS加密压缩 ,JS加密. 使用方式 / 注意事项 1.本工具是本站长结合了64个组件(大部分为开源组件),开发出来 ...

  5. php字符串加密解密源码,PHP中加密解密字符串函数源代码

    PHP中加密解密字符串函数源代码: /** *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ / ...

  6. php通用检测函数集合

    <? // [文件名]: c_check.inc // [作 用]: 通用检测函数集 // [作 者]: 天灰 // [最后修改日期]: 2001/05/11[cxx] // [变量定义规则]: ...

  7. php家检乘除,php通用检测函数集(转)_php

    php通用检测函数集 转http://wb.josetech.com/userHome/4/jaxp/add-ons/news/13/20020828/51.html 发布时间:2002-08-28 ...

  8. 根据自己平时的经验写的针对SQLSERVER操作的通用类库

    根据自己平时的经验写的针对SQLSERVER操作的通用类库   1using System;   2using System.Data;   3using System.Data.SqlClient; ...

  9. OPPO 40万年薪招应届生,狂揽芯片人才;恶意差评小米新手机,一用户被判赔3万元;谷歌开源全同态加密通用转译器|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  10. jquery中ajax应用中的通用ajax()函数

    全栈工程师开发手册 (作者:栾鹏) jquery系列教程6-AJAX全解 jquery中ajax应用--通用ajax函数 jquery提供了比get和post更加通用的ajax() 代码如下: $.a ...

最新文章

  1. Objective-C中.h、.m、.mm的区别
  2. Hadoop环境搭建(二)CentOS7的下载与安装
  3. 内存模型 C++ 和Java内存模型
  4. 运行错误5无效的过程调用或参数_FANUC系统常用参数汇总
  5. VC 在对话框中增加菜单栏
  6. 你是码农还是Geek?
  7. A Python example for HiveServer2
  8. jq中each的中断
  9. LeetCode 343. 整数拆分(Integer Break) 25
  10. js中的instanceof运算符
  11. 怎么把计算机光盘盒弹出,台式电脑10怎么弹出光驱-光驱台式机机箱打开方法
  12. 分类(category)的使用
  13. appdesigner生成exe文件并转移至不上网机
  14. android 从服务端获取的图片怎么适配不同分屏幕的手机,移动端的适配|切图|标注...
  15. 读《静静的顿河》有感
  16. Angr 从入门到放弃(一)
  17. Django 页面跳转
  18. Android入门之Activity四种启动模式
  19. 全新项目如何开展测试工作
  20. php实现 DES/CBC/PCCS5padding 加解密模式

热门文章

  1. 限制页面被pc端访问
  2. 我的Python学习笔记(四):动态添加属性和方法
  3. java:IO流学习小结
  4. Runtime.exec使用错误导致延迟.md
  5. [poj1741 Tree]树上点分治
  6. 数据结构练习(20)和为n连续正数序列
  7. 简单的Android文件浏览器(附源代码)
  8. 《零基础学习Liunx之三》 The following takes place between 04:00PM and 05:00PM
  9. Java程序员需要了解的几个开源协议介绍
  10. aspnet ajax 1.0中的according控件