當前位置:首頁 » 密碼管理 » csha1加密

csha1加密

發布時間: 2022-06-03 13:02:05

⑴ .net sdk實現sha1加密演算法和簽名驗證

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Security.Cryptography;
using System.Text;

//xlding, 2013/07/25

namespace Gemr.Utils
{
public class CommonAlgorithms
{
#region Sort

public static string[] BubbleSort(string[] array)
{
int length = array.Length;
for (int i = 0; i <= length - 1; i++)
{
for (int j = length - 1; j > i; j--)
{
if (array[j].CompareTo(array[j - 1]) < 0)
{
string temp = array[j];
array[j] = array[j - 1];

array[j - 1] = temp;
}
}
}
return array;
}

#endregion Sort

private static char[] constant =
{
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
};

public byte[] ConvertStringToByteArray(string str)
{
if (string.IsNullOrEmpty(str)) return null;

byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);

return byteArray;

}

public static string GenerateRandom(int Length)
{
System.Text.StringBuilder newRandom = new System.Text.StringBuilder(52);
Random rd = new Random();
for (int i = 0; i < Length; i++)
{
newRandom.Append(constant[rd.Next(52)]);
}
return newRandom.ToString();
}

/// <summary>
/// Put the object serialization for byte array
/// </summary>
public static byte[] SerializeObject(object obj)
{
if (obj == null)
return null;
MemoryStream ms = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
byte[] bytes = new byte[ms.Length];
ms.Read(bytes, 0, bytes.Length);
ms.Close();
return bytes;
}

/// <summary>
/// Byte array reverse serialized into object
/// </summary>
public static object DeserializeObject(byte[] bytes)
{
object obj = null;
if (bytes == null)
return obj;
MemoryStream ms = new MemoryStream(bytes);
ms.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
obj = formatter.Deserialize(ms);
ms.Close();
return obj;
}

public static string ConvertByteArrayToString(byte[] byteArray)
{
if (byteArray == null || byteArray.Length == 0) return null;

string str = System.Text.Encoding.Default.GetString(byteArray);

return str;
}

//public static string ByteToString(byte[] value)
//{
// StringBuilder sb = new StringBuilder();
// for (int i = 0; i < value.Length; i++)
// {
// sb.Append(value[i].ToString("x2"));
// }
// return sb.ToString();
//}

#region SHA1 (數字簽名)

public static string GetSHA1(string strSource)
{
string strResult = "";

//Create
System.Security.Cryptography.SHA1 sha = System.Security.Cryptography.SHA1.Create();
byte[] bytResult = sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource));
for (int i = 0; i < bytResult.Length; i++)
{
strResult = strResult + bytResult[i].ToString("X2");
}
return strResult;
}

public static byte[] GetSHA1(byte[] value)
{
System.Security.Cryptography.SHA1 sha = System.Security.Cryptography.SHA1.Create();
return sha.ComputeHash(value);
}

#endregion SHA1

#region DES

/**/
/// <summary>
/// DES加密
/// </summary>
/// <param name="encryptString"></param>
/// <returns></returns>
public static string DesEncrypt(string encryptString, string sKey)
{

using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Convert.ToBase64String(ms.ToArray());
ms.Close();
return str;
}

}

/**/
/// <summary>
/// DES解密
/// </summary>
/// <param name="decryptString"></param>
/// <returns></returns>
public static string DesDecrypt(string decryptString, string sKey)
{

byte[] inputByteArray = Convert.FromBase64String(decryptString);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return str;
}

}

#endregion DES

#region AES

#region Use static key

private static readonly byte[] aesKey = { 0x03, 0x00, 0x52, 0xc3, 0x03, 0x00, 0x52, 0xc3, 0x03, 0x00, 0x52, 0xc3,

0x03, 0x00, 0x52, 0xc3 };

public static string StaticAeskey
{
get { return System.Text.Encoding.Default.GetString(aesKey); }
}

/// <summary>
/// AES encode.
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static string AesEncode(string value)
{
using (Aes aes = Aes.Create())
{
using (ICryptoTransform encryptor = aes.CreateEncryptor(aesKey, aesKey))
{
byte[] buffer = Encoding.UTF8.GetBytes(value);
buffer = encryptor.TransformFinalBlock(buffer, 0, buffer.Length);
return Convert.ToBase64String(buffer);
}
}
}

/// <summary>
/// AES decode.
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static string AesDecode(string value)
{
using (Aes aes = Aes.Create())
{
using (ICryptoTransform decryptor = aes.CreateDecryptor(aesKey, aesKey))
{
byte[] buffer = Convert.FromBase64String(value);
buffer = decryptor.TransformFinalBlock(buffer, 0, buffer.Length);
return Encoding.UTF8.GetString(buffer);
}
}
}

#endregion Use static key

public static byte[] GetKey()
{

Random rd = new Random();
byte[] key = new byte[16];
rd.NextBytes(key);
return key;
}

public static byte[] AesEncode(byte[] key, byte[] value)
{
using (Aes aes = Aes.Create())
{
using (ICryptoTransform encryptor = aes.CreateEncryptor(key, key))
{
return encryptor.TransformFinalBlock(value, 0, value.Length);
}
}
}

public static byte[] AesDecode(byte[] key, byte[] value)
{
using (Aes aes = Aes.Create())
{
using (ICryptoTransform decryptor = aes.CreateDecryptor(key, key))
{
return decryptor.TransformFinalBlock(value, 0, value.Length);
}
}
}

#endregion AES

}
}

⑵ 同樣的字元串,.net用SHA1加密出來的結果和網站的加密結果不同。求解

sql Server 2005下自帶的函數HashBytes() ,此函數是微軟在SQL Server 2005中提供的,可以用來計算一個字元串的MD5和SHA1值,使用方法如下:

--獲取123456的MD5加密串
select hashbytes('MD5', '123456') ;
--獲取123456的SHA1加密串
select hashbytes('SHA1', '123456') ;
有了這個函數可以在SQL Server中為字元串進行加密,但是HashBytes() 函數的返回結果是VarBinary類型(以 0x 開頭 16 進制形式的二進制數據)。通常情況下,我們需要的都是字元串型的數據,很多人首先想到的可能就是用CAST或Convert函數將VarBinary轉換為VarChar,但這樣轉換後的結果會是亂碼,正確轉換VarBinary可變長度二進制型數據到16進制字元串應該使用系統內置函數sys.fn_VarBinToHexStr()或sys.fn_SqlVarBaseToStr(只在sqlserver2005以後的有),如下所示:

select sys.fn_VarBinToHexStr(hashbytes('MD5', '123456'))
然後就可以截取需要的部分:

set right(sys.fn_VarBinToHexStr(hashbytes('MD5','123456')),32)
為MD5加密串。

⑶ MD5、SHA1、CRC32值是干什麼的

MD5可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。MD5由MD4、MD3、MD2改進而來,主要增強演算法復雜度和不可逆性。MD5演算法因其普遍、穩定、快速的特點,仍廣泛應用於普通數據的加密保護領域 。

SHA-1(英語:Secure Hash Algorithm 1,中文名:安全散列演算法1)是一種密碼散列函數,美國國家安全局設計,並由美國國家標准技術研究所(NIST)發布為聯邦數據處理標准(FIPS)。SHA-1可以生成一個被稱為消息摘要的160位(20位元組)散列值,散列值通常的呈現形式為40個十六進制數。

CRC32檢錯能力極強,開銷小,易於用編碼器及檢測電路實現。從其檢錯能力來看,它所不能發現的錯誤的幾率僅為0.0047%以下。從性能上和開銷上考慮,均遠遠優於奇偶校驗及算術和校驗等方式。

因而,在數據存儲和數據通訊領域,CRC無處不在:著名的通訊協議X.25的FCS(幀檢錯序列)採用的是CRC-CCITT,ARJ、LHA等壓縮工具軟體採用的是CRC32,磁碟驅動器的讀寫採用了CRC16,通用的圖像存儲格式GIF、TIFF等也都用CRC作為檢錯手段。

(3)csha1加密擴展閱讀:

在MD5演算法中,首先需要對信息進行填充,這個數據按位(bit)補充,要求最終的位數對512求模的結果為448。也就是說數據補位後,其位數長度只差64位(bit)就是512的整數倍。即便是這個數據的位數對512求模的結果正好是448也必須進行補位。

補位的實現過程:首先在數據後補一個1 bit; 接著在後面補上一堆0 bit, 直到整個數據的位數對512求模的結果正好為448。總之,至少補1位,而最多可能補512位 。

c語言 實現sha1演算法

你再知道裡面搜「sha1演算法」就有。void sha1_finish( sha1_context *ctx, uint8 digest[20] )函數就是你要的。

java的sha1加密和object-c的sha1加密後的值不一樣,誰能幫我解決一下。多謝了

結果是一樣的, 但是你多搞了一點: java你是用Base64編碼成字元串, 而ObjC你是直接用16進制輸出的, 你java上不Base64編碼, 也輸出成16進制, 就一樣了;

⑹ C# MD5或SHA-1加密

//SHA1加密
privatestaticstringEncrypted(stringtargetPassword)
{
byte[]pwBytes=Encoding.UTF8.GetBytes(targetPassword);
byte[]hash=SHA1.Create().ComputeHash(pwBytes);
StringBuilderhex=newStringBuilder();
for(inti=0;i<hash.Length;i++)hex.Append(hash[i].ToString("X2"));

returnhex.ToString();
}
staticvoidMain(string[]args)
{
Console.WriteLine(Encrypted("02443312"));
Console.ReadKey();
}

⑺ C語言 sha1編碼 返回二進制源碼怎麼寫

sha1函數返回的就是經過sha1演算法計算過後的值

熱點內容
蘋果火影忍者腳本 發布:2025-05-16 23:23:46 瀏覽:450
python寫入資料庫 發布:2025-05-16 23:19:11 瀏覽:698
修復系統時什麼配置好 發布:2025-05-16 22:52:07 瀏覽:803
逆戰腳本掛機 發布:2025-05-16 22:30:01 瀏覽:936
java隨機產生數 發布:2025-05-16 22:25:52 瀏覽:256
java任務管理 發布:2025-05-16 22:17:02 瀏覽:572
安卓如何修改cpu 發布:2025-05-16 21:58:20 瀏覽:366
pythonainb 發布:2025-05-16 21:45:56 瀏覽:857
淘汰伺服器可以做家用電腦嗎 發布:2025-05-16 21:41:31 瀏覽:844
遊程編碼c語言 發布:2025-05-16 21:26:51 瀏覽:587