using System;
using System.Security.Cryptography;
using System.Text;
namespace Hash
{
public class Hash
{
public Hash() { }
public enum HashType : int
{
MD5,
SHA1,
SHA256,
SHA512
}
public static string GetHash(string text, HashType hashType)
{
string hashString;
switch (hashType)
{
case HashType.MD5:
hashString = GetMD5(text);
break;
case HashType.SHA1:
hashString = GetSHA1(text);
break;
case HashType.SHA256:
hashString = GetSHA256(text);
break;
case HashType.SHA512:
hashString = GetSHA512(text);
break;
default:
hashString = "Invalid Hash Type";
break;
}
return hashString;
}
public static bool CheckHash(string original, string hashString, HashType hashType)
{
string originalHash = GetHash(original, hashType);
return (originalHash == hashString);
}
private static string GetMD5(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
MD5 hashString = new MD5CryptoServiceProvider();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
private static string GetSHA1(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA1Managed hashString = new SHA1Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
private static string GetSHA256(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA256Managed hashString = new SHA256Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
private static string GetSHA512(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA512Managed hashString = new SHA512Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
}
}
分享到:
相关推荐
根据给定文件的信息,本文将深入探讨C#中MD5、SHA1、SHA256、SHA512这四种加密算法的实现方法,并通过具体的代码示例来展示如何使用这些算法进行数据加密。 ### 一、理解MD5、SHA1、SHA256、SHA512 #### 1. MD5 MD...
本文将深入探讨如何使用C#实现四种常见的加密算法:MD5、SHA1、SHA256、SHA512,并通过示例代码来理解这些算法的具体应用。 ### MD5 (Message-Digest Algorithm 5) MD5是一种广泛使用的散列函数,它可以将任意长度...
MD5(Message-Digest Algorithm 5)、SHA1(Secure Hash Algorithm 1)和SHA256(Secure Hash Algorithm 2,256位版本)是常见的哈希函数,用于生成固定长度的数字指纹,常用于数据完整性校验、密码存储等领域。...
在VC++环境下,我们可以使用C++语言来实现SHA256加密算法,并结合MFC(Microsoft Foundation Classes)库来创建用户界面,提供更加便捷的操作。 SHA256的主要特点包括: 1. 安全性:SHA256算法被设计成对于任何给定...
常见的单向散列加密算法包括 MD5、SHA1、SHA256 等。 二、对称加密算法 对称加密算法采用单密钥加密,在数据传输过程中,发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收...
总之,MD5、SHA1、SHA256和SHA512是用于数据完整性验证和安全认证的哈希函数,它们通过特定的算法将数据转化为固定长度的摘要。C语言实现这些算法时,需要理解和掌握哈希函数的工作原理,并考虑跨平台兼容性和效率...
## 说明 此程序可以进行sha1,sha256,md5的加密 在input输入框内输入所需加密的数据,然后点击"encryption"按扭即可实现加密; 默认input输入框内的数据为123456
SHA系列散列函数是信息安全领域广泛应用的一组加密算法,它们被设计用于数字签名、数据完整性校验等场景。本文将详细介绍SHA-1、SHA-256、SHA-384以及SHA-512这四种算法,并结合C语言实现进行讲解。 1. SHA-1算法:...
在这个主题中,我们将深入探讨如何在ASP中实现MD5、SHA1和SHA256这三种常见的哈希加密算法。 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将任意长度的输入转换为固定长度的128位(16字节)的...
JAVA 加密算法
在这个主题中,我们主要关注三种哈希算法:SHA256、MD5和SHA1。这些算法都是将任意长度的数据转换为固定长度的摘要,具有单向性和抗碰撞性。 1. **MD5(Message-Digest Algorithm 5)** - **简介**:MD5由Ronald ...
标题中的“sha1withrsa”和“华为sha256withrsa”算法是两种常见的公钥加密算法在数字签名过程中的应用。这两种算法都属于非对称加密算法的一部分,广泛用于确保数据完整性和认证发送者身份。在此,我们主要探讨它们...
在本文中,我们将探讨两种常见的哈希算法:SHA256和MD5。 首先,MD5(Message-Digest Algorithm 5)是由Ron Rivest在1991年设计的,它生成一个128位(16字节)的哈希值。MD5曾被广泛用于数据校验和密码存储,但由于...
加密算法的 js 实现 md4 md5 sha-1 加密算法的 js 实现 md4 md5 sha-1 加密算法的 js 实现 md4 md5 sha-1 加密算法的 js 实现 md4 md5 sha-1
在C#编程环境中,实现SHA-256加密算法可以为应用程序提供强大的安全保障。 首先,我们需要理解SHA-256的工作原理。SHA-256是SHA-2家族的一员,它通过一系列复杂的数学运算(如位操作、异或、旋转等)将输入信息...
1. **3DES(Triple DES)**:3DES是一种对称加密算法,基于DES(Data Encryption Standard)进行改进。它通过三次迭代应用DES密钥,提高了安全性。3DES通常用于保护敏感数据,如金融交易。 2. **AES(Advanced ...
本文将深入探讨SHA512加密算法的原理、C++实现以及其在实际应用中的重要性。 SHA512算法基于密码学中的消息摘要思想,通过一系列复杂的数学运算(如位操作、异或、循环左移等),将输入数据转化为一个512位的二进制...
在Java中实现SHA-256加密算法,可以使用内置的`java.security.MessageDigest`类。这个过程涉及到几个关键步骤,包括创建`MessageDigest`实例、更新输入数据和获取哈希值。 首先,我们需要导入必要的Java库: ```...
3. SHA1和MD5已不再被视为安全的哈希算法,建议使用SHA-256或更高级别的哈希算法。 4. JavaScript中的加密操作应尽可能在服务器端进行,以减少敏感信息暴露的风险。 在提供的"js实现SHA1和MD5加密.txt"文件中,可能...
在C++中实现SHA-256加密算法,我们需要了解其基本原理、步骤以及如何在代码中实现。 SHA-256算法的基本流程包括以下步骤: 1. **初始化哈希值**:首先,我们需要设置一组初始的哈希值,这些是固定的常量,由SHA-...