.Net 常用加密算法类

.net算法 递归 .net的算法 递归算法 可以好好理解 立即下载

.Net框架由于拥有CLR提供的丰富库支持,只需很少的代码即可实现先前使用C等旧式语言很难实现的加密算法。本类实现一些常用机密算法,供参考。其中MD5算法返回Int的ToString字串。

using System;
using System.IO;
using System.Data;
using System.Text;
using System.Diagnostics;
using System.Security;
using System.Security.Cryptography;

namespace com.Quickline.Encrypt
{
 /// <summary>
 /// 类名:HashEncrypt
 /// 作用:对传入的字符串进行Hash运算,返回通过Hash算法加密过的字串。
 /// 属性:[无]
 /// 构造函数额参数:
 /// IsReturnNum:是否返回为加密后字符的Byte代码
 /// IsCaseSensitive:是否区分大小写。
 /// 方法:此类提供MD5,SHA1,SHA256,SHA512等四种算法,加密字串的长
度依次增大。
 /// </summary>
 public class HashEncrypt
 {
  //private string strIN;
  private bool isReturnNum;
  private bool isCaseSensitive;
  
  public HashEncrypt(bool IsCaseSensitive,bool IsReturnNum)
  {
   this.isReturnNum = IsReturnNum;
   this.isCaseSensitive = IsCaseSensitive;
  }
  
  
  private string getstrIN(string strIN)
  {
   //string strIN = strIN;
   if (strIN.Length == 0)
   {
    strIN = "~NULL~";
   }
   if (isCaseSensitive == false)
   {
    strIN = strIN.ToUpper();
   }
   return strIN;
  }
  public string MD5Encrypt(string strIN)
  {
   //string strIN = getstrIN(strIN);
   byte[] tmpByte;
   MD5 md5 = new MD5CryptoServiceProvider();
   tmpByte =
md5.ComputeHash(GetKeyByteArray(getstrIN(strIN)));
   md5.Clear();

   return GetStringValue(tmpByte);

  }
  
  public string SHA1Encrypt(string strIN)
  {
   //string strIN = getstrIN(strIN);
   byte[] tmpByte;
   SHA1 sha1 = new SHA1CryptoServiceProvider();

   tmpByte = sha1.ComputeHash(GetKeyByteArray(strIN));
   sha1.Clear();

   return GetStringValue(tmpByte);

  }

  public string SHA256Encrypt(string strIN)
  {
   //string strIN = getstrIN(strIN);
   byte[] tmpByte;
   SHA256 sha256 = new SHA256Managed();

   tmpByte =
sha256.ComputeHash(GetKeyByteArray(strIN));
   sha256.Clear();

   return GetStringValue(tmpByte);

  }

  public string SHA512Encrypt(string strIN)
  {
   //string strIN = getstrIN(strIN);
   byte[] tmpByte;
   SHA512 sha512 = new SHA512Managed();

   tmpByte =
sha512.ComputeHash(GetKeyByteArray(strIN));
   sha512.Clear();

   return GetStringValue(tmpByte);

  }
  
  /// <summary>
  /// 使用DES加密(Added by niehl 2005-4-6)
  /// </summary>
  /// <param name="originalValue">待加密的字符串</param>
  /// <param name="key">密钥(最大长度8)</param>
  /// <param name="IV">初始化向量(最大长度8)</param>
  /// <returns>加密后的字符串</returns>
  public string DESEncrypt(string originalValue,string key,string IV)
  {
   //将key和IV处理成8个字符
   key += "12345678";
   IV += "12345678";
   key = key.Substring(0,8);
   IV = IV.Substring(0,8);

   SymmetricAlgorithm sa;
   ICryptoTransform ct;
   MemoryStream ms;
   CryptoStream cs;
   byte[] byt;

   sa = new DESCryptoServiceProvider();
   sa.Key = Encoding.UTF8.GetBytes(key);
   sa.IV = Encoding.UTF8.GetBytes(IV);
   ct = sa.CreateEncryptor();

   byt = Encoding.UTF8.GetBytes(originalValue);

   ms = new MemoryStream();
   cs = new CryptoStream(ms, ct,
CryptoStreamMode.Write);
   cs.Write(byt, 0, byt.Length);
   cs.FlushFinalBlock();

   cs.Close();

   return Convert.ToBase64String(ms.ToArray());

  }

  public string DESEncrypt(string originalValue,string key)
  {
   return DESEncrypt(originalValue,key,key);
  }

  /// <summary>
  /// 使用DES解密(Added by niehl 2005-4-6)
  /// </summary>
  /// <param name="encryptedValue">待解密的字符串</param>
  /// <param name="key">密钥(最大长度8)</param>
  /// <param name="IV">m初始化向量(最大长度8)</param>
  /// <returns>解密后的字符串</returns>
  public string DESDecrypt(string encryptedValue,string key,string IV)
  {
   //将key和IV处理成8个字符
   key += "12345678";
   IV += "12345678";
   key = key.Substring(0,8);
   IV = IV.Substring(0,8);

   SymmetricAlgorithm sa;
   ICryptoTransform ct;
   MemoryStream ms;
   CryptoStream cs;
   byte[] byt;

   sa = new DESCryptoServiceProvider();
   sa.Key = Encoding.UTF8.GetBytes(key);
   sa.IV = Encoding.UTF8.GetBytes(IV);
   ct = sa.CreateDecryptor();

   byt = Convert.FromBase64String(encryptedValue);

   ms = new MemoryStream();
   cs = new CryptoStream(ms, ct,
CryptoStreamMode.Write);
   cs.Write(byt, 0, byt.Length);
   cs.FlushFinalBlock();

   cs.Close();

   return Encoding.UTF8.GetString(ms.ToArray());

  }

  public string DESDecrypt(string encryptedValue,string key)
  {
   return DESDecrypt(encryptedValue,key,key);
  }

  private string GetStringValue(byte[] Byte)
  {
   string tmpString = "";

   if (this.isReturnNum == false)
   {
    ASCIIEncoding Asc = new ASCIIEncoding();
    tmpString = Asc.GetString(Byte);
   }
   else
   {
    int iCounter;

    for
(iCounter=0;iCounter<Byte.Length;iCounter++)
    {
     tmpString = tmpString +
Byte[iCounter].ToString();
    }
    
   }
   
   return tmpString;
  }

  private byte[] GetKeyByteArray(string strKey)
  {

   ASCIIEncoding Asc = new ASCIIEncoding();
   
   int tmpStrLen = strKey.Length;
   byte[] tmpByte = new byte[tmpStrLen-1];

   tmpByte = Asc.GetBytes(strKey);

   return tmpByte;

  }

 }
}

 

(转贴http://www.webasp.net/article/27/26592.htm) 

.net各种算法集合 冒泡排序 快速排序 折半插入排序 希尔排序 基数排序 直接插入排序 立即下载

相关推荐

.net 递归算法 .net 递归算法.net 递归算法

.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法

C#,.NET常见算法

【代码】C#,.NET常见算法。

房东的猫的博客 1366

c#,.net,算法

c#的一些面试笔试必备题目,及各类重要算法,十分适合应届生求职,面试宝典

数据加密算法

目前企业面临的计算环境和过去有很大的变化,许多数据资源能够依靠网络来远程存取,而且越来越多的通讯依赖于公共网络公共网络(如 Internet),而这些环境并不保证实体间的安全通信,数据在传输过程可能被其它人读取或篡改。加密将防止数据被查看或修改,并在原本不安全的信道上提供安全的通信信道,它达到以下目的:保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证

dajidali的专栏 2188

分享一下使用Xilinx FPGA驱动MIPI DSI LCD屏的心路历程

分享一下调试用Xilinx FPGA驱动MIPI DSI LCD屏的心路历程,看到的朋友们,可以避免继续踩坑。

haoxingheng的专栏 5014

OpenSceneGraph编译、安装、开发环境

详细描述WIndows 10下使用Visual Studio 2019编译OpenSceneGraph 3.6.5的操作流程

国产CAx(CAD/CAE/CAM)软件研发 8771

算法集

.NET算法集 1.   选择排序usingSystem;  usingSystem.Collections.Generic;  usingSystem.Linq;  usingSystem.Text;    namespacesorter  {      public class SelectionSorter      {          private int min;          ...

史凯凯的编程技术博客 479

用Matlab系统辨识工具箱搞定温控系统建模:从阶跃响应到传递函数(附完整代码)

本文详细介绍了如何使用Matlab系统辨识工具箱进行温控系统建模,从阶跃响应数据采集到传递函数参数辨识的全过程。通过实际案例和完整代码,帮助工程师快速掌握PID控制参数整定技巧,提升温控系统设计效率。特别适合单片机开发者和自动化控制工程师参考。

weixin_30736301的博客 309

.net6数据结构与算法

程序 = 数据结构 + 算法;数据:其实就是程序的核心,程序就是为了解决问题,管理数据。数据结构:就是一个容器,用来存放数据,不同的数据结构有不同的特点,为了更好的完成数据的存储和管理。算法:是指解题方案的准确而完整的描述,是一系列解决问题的清晰命令,算法代表着用系统的方法描述解决问题的策略机制。链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

CZ_TyT的博客 2728

【OTDR曲线工具箱】04 批量生成sor文件

软件下载地址:http://120.78.150.214:9999/isora.zip 通过一个测试数据sor文件,批量生成多个测试文件(基于Bellcore GR196及SR-4731标准)。主要考虑哪些问题: 1、sor测试是否符合要求(主要是衰减系数) 2、多个文件的创建时间 3、文件必须随机处理,不要看省去一模一样。 来说说怎么操作的 第一步:选择参考曲线 参考曲线的选择由两种方法:从文件中导入、从曲线库中选择。 其中曲线库分为公共库和个人库两种,平时浏览的sor文件都可以加载到库中。 第二步

夜晚是传说的博客 5268

深入解析高通SA8775芯片:性能、架构与研发创新趋势

SA8775芯片凭借其强大的CPU、GPU和AI加速能力,能够应对现代智能系统中的复杂计算任务。它不仅适合高性能计算、深度学习应用,也在汽车、智能设备等领域有广泛的应用前景。无论是在自动驾驶系统中,还是在车载信息娱乐和高级嵌入式系统中,SA8775都展现了其出色的计算能力和能效平衡,是现代智能系统的重要硬件基础。SA8775芯片作为高通的高性能处理平台,具有出色的计算和AI加速能力,但也存在一些值得关注的地方。

weixin_43199439的博客 9344

.Net 常用加密算法类(md5)

 .Net 常用加密算法类(md5)

800

地图自定义编码CSV转换成ini文件

创 建 schema.ini 文件:有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到“无法使用.csv,因为它不包含唯一列”错误消息。这是因为您的 .csv 文件可能包含数值数据,例如数值邮政编码。对于新的地理角色,Tableau 将只接受文本字段。但是,您可以创建一个 schema.ini 文件,以指示 Tableau 应将您要导入的数值字段视为文本字段。...

wenyusuran的专栏 1975

Net 常用加密算法类

Net 常用加密算法类  .Net框架由于拥有CLR提供的丰富库支持,只需很少的代码即可实现先前使用C等旧式语言很难实现的加密算法。本类实现一些常用机密算法,供参考。其中MD5算法返回Int的ToString字串。using System;using System.IO;using System.Data;using System.Text;using System.Diagnostics

SmartJavaer的专栏 825

037、有源钳位反激变换器(ACF)原理

文章摘要 有源钳位反激变换器(ACF)是一种克服常规反激电路漏感能量处理瓶颈的高效解决方案。文章从实际炸机案例切入,指出RCD钳位电路在高压、宽范围、高功率场景下的局限性。ACF通过增加钳位管和钳位电容,将漏感能量回收而非消耗,实现效率提升2-3%、精准电压钳位和更好EMI性能。文章详细解析了ACF四阶段工作过程、关键波形特征,并指出设计陷阱:漏感需保持1%-3%特定范围、钳位电容ESR要求严格、需专用控制IC支持互补驱动。最后给出实用调试建议,强调ACF适用于65W+功率场景,低压验证后再逐步升压的调试方

Jack010169的博客 260

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

.NET 常用的加密算法类

Net框架由于拥有CLR提供的丰富库支持,只需很少的代码即可实现先前使用C等旧式语言很难实现的加密算法。本类实现一些常用机密算法,供参考。其中MD5算法返回Int的ToString字串。 using System;using System.IO;using System.Data;using System.Text;using System.Diagnostics;using System.Se...

weixin_30692143的博客 78

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 读写XML文件
下一篇: 网上几种常见校验码图片分析
alys
博客等级 码龄23年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值