哈希(不可逆)加密通用类库函数
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
哈希(不可逆)加密通用类库函数相关推荐
- day011--mysql中的不可逆加密函数,信息函数及转换函数
目录 一,不可逆的加密函数 1,md5(str)及sha(str) 二,信息函数 三,转换函数 一,不可逆的加密函数 1,md5(str)及sha(str) mysql8中所支持的加密函数不多,就两个 ...
- 不可逆加密:说一下你常用的加密算法
加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密. 一.不可逆加密 常见的不可逆加密算法有MD5,HMAC,SHA1.SHA-224.SHA-256.SHA-3 ...
- 可逆加密和不可逆加密
加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密. 一.不可逆加密 常见的不可逆加密算法有MD5,HMAC,SHA1.SHA-224.SHA-256.SHA-3 ...
- JS加密,JS混淆,JS混淆加密,JS不可逆加密,JS加密压缩
分享一个JavaScript加密,JS加密,JS混淆,JS混淆加密,JS不可逆加密,JS加密压缩 ,JS加密. 使用方式 / 注意事项 1.本工具是本站长结合了64个组件(大部分为开源组件),开发出来 ...
- php字符串加密解密源码,PHP中加密解密字符串函数源代码
PHP中加密解密字符串函数源代码: /** *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ / ...
- php通用检测函数集合
<? // [文件名]: c_check.inc // [作 用]: 通用检测函数集 // [作 者]: 天灰 // [最后修改日期]: 2001/05/11[cxx] // [变量定义规则]: ...
- php家检乘除,php通用检测函数集(转)_php
php通用检测函数集 转http://wb.josetech.com/userHome/4/jaxp/add-ons/news/13/20020828/51.html 发布时间:2002-08-28 ...
- 根据自己平时的经验写的针对SQLSERVER操作的通用类库
根据自己平时的经验写的针对SQLSERVER操作的通用类库 1using System; 2using System.Data; 3using System.Data.SqlClient; ...
- OPPO 40万年薪招应届生,狂揽芯片人才;恶意差评小米新手机,一用户被判赔3万元;谷歌开源全同态加密通用转译器|极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
- jquery中ajax应用中的通用ajax()函数
全栈工程师开发手册 (作者:栾鹏) jquery系列教程6-AJAX全解 jquery中ajax应用--通用ajax函数 jquery提供了比get和post更加通用的ajax() 代码如下: $.a ...
最新文章
- Objective-C中.h、.m、.mm的区别
- Hadoop环境搭建(二)CentOS7的下载与安装
- 内存模型 C++ 和Java内存模型
- 运行错误5无效的过程调用或参数_FANUC系统常用参数汇总
- VC 在对话框中增加菜单栏
- 你是码农还是Geek?
- A Python example for HiveServer2
- jq中each的中断
- LeetCode 343. 整数拆分(Integer Break) 25
- js中的instanceof运算符
- 怎么把计算机光盘盒弹出,台式电脑10怎么弹出光驱-光驱台式机机箱打开方法
- 分类(category)的使用
- appdesigner生成exe文件并转移至不上网机
- android 从服务端获取的图片怎么适配不同分屏幕的手机,移动端的适配|切图|标注...
- 读《静静的顿河》有感
- Angr 从入门到放弃(一)
- Django 页面跳转
- Android入门之Activity四种启动模式
- 全新项目如何开展测试工作
- php实现 DES/CBC/PCCS5padding 加解密模式
热门文章
- 限制页面被pc端访问
- 我的Python学习笔记(四):动态添加属性和方法
- java:IO流学习小结
- Runtime.exec使用错误导致延迟.md
- [poj1741 Tree]树上点分治
- 数据结构练习(20)和为n连续正数序列
- 简单的Android文件浏览器(附源代码)
- 《零基础学习Liunx之三》 The following takes place between 04:00PM and 05:00PM
- Java程序员需要了解的几个开源协议介绍
- aspnet ajax 1.0中的according控件