龙空技术网

C#版开源免费的Bouncy Castle密码库

opendotnet 627

前言:

目前咱们对“bc源码出售平台”大致比较注重,咱们都想要学习一些“bc源码出售平台”的相关文章。那么小编也在网摘上网罗了一些关于“bc源码出售平台””的相关内容,希望大家能喜欢,大家一起来了解一下吧!

前言

今天大姚给大家分享一款C#版开源、免费的Bouncy Castle密码库:BouncyCastle。

项目介绍

BouncyCastle是一款C#版开源、免费的Bouncy Castle密码库,开发人员可以通过该项目在他们的 C# 应用程序中使用 Bouncy Castle 提供的各种密码学功能,从而加强数据的安全性和保护隐私信息。

Bouncy Castle密码学库介绍

Bouncy Castle是一个流行的密码学库,提供了广泛的密码算法和协议的实现。它由澳大利亚注册的慈善组织“Bouncy Castle军团”开发,旨在提供可靠而安全的加密解决方案。

项目源代码创建控制台应用

创建一个名为:BouncyCastleExercise的控制台。

安装BouncyCastle包

搜索名为:BouncyCastle.Cryptography包安装:

BouncyCastle使用示例

 internal class Program

{

static void Main(string[] args)

{

#region AES加密解密示例

string aesPlaintext = "Hello, 追逐时光者!!!";

byte[] aesKey = new byte[16];

byte[] aesIV = new byte[16];

byte[] aesCiphertext = EncryptAES(aesPlaintext, aesKey, aesIV);

string decryptedAesPlaintext = DecryptAES(aesCiphertext, aesKey, aesIV);

Console.WriteLine("AES plaintext: " + aesPlaintext);

Console.WriteLine("AES ciphertext: " + Convert.ToBase64String(aesCiphertext));

Console.WriteLine("Decrypted AES plaintext: " + decryptedAesPlaintext);

#endregion

#region DES 加密解密示例

string desPlaintext = "Hello, DES!";

byte[] desKey = new byte[8];

byte[] desIV = new byte[8];

byte[] desCiphertext = EncryptDES(desPlaintext, desKey, desIV);

string decryptedDesPlaintext = DecryptDES(desCiphertext, desKey, desIV);

Console.WriteLine("DES plaintext: " + desPlaintext);

Console.WriteLine("DES ciphertext: " + Convert.ToBase64String(desCiphertext));

Console.WriteLine("Decrypted DES plaintext: " + decryptedDesPlaintext);

#endregion

#region RC4 加密解密示例

string rc4Plaintext = "Hello, RC4!";

byte[] rc4Key = new byte[16];

byte[] rc4Ciphertext = EncryptRC4(rc4Plaintext, rc4Key);

string decryptedRc4Plaintext = DecryptRC4(rc4Ciphertext, rc4Key);

Console.WriteLine("RC4 plaintext: " + rc4Plaintext);

Console.WriteLine("RC4 ciphertext: " + Convert.ToBase64String(rc4Ciphertext));

Console.WriteLine("Decrypted RC4 plaintext: " + decryptedRc4Plaintext);

#endregion

#region 哈希算法示例

// MD5 示例

string md5Plaintext = "Hello, MD5!";

string md5Hash = CalculateMD5Hash(md5Plaintext);

Console.WriteLine("MD5 hash of 'Hello, MD5!': " + md5Hash);

// SHA1 示例

string sha1Plaintext = "Hello, SHA1!";

string sha1Hash = CalculateSHA1Hash(sha1Plaintext);

Console.WriteLine("SHA1 hash of 'Hello, SHA1!': " + sha1Hash);

// SHA256 示例

string sha256Plaintext = "Hello, SHA256!";

string sha256Hash = CalculateSHA256Hash(sha256Plaintext);

Console.WriteLine("SHA256 hash of 'Hello, SHA256!': " + sha256Hash);

#endregion

}

#region AES加密解密示例

/// <summary>

/// AES 加密方法

/// </summary>

/// <param name="plaintext">plaintext</param>

/// <param name="key">key</param>

/// <param name="iv">iv</param>

/// <returns></returns>

public static byte[] EncryptAES(string plaintext, byte[] key, byte[] iv)

{

IBufferedCipher cipher = CipherUtilities.GetCipher("AES/CTR/PKCS7Padding");

cipher.Init(true, new ParametersWithIV(ParameterUtilities.CreateKeyParameter("AES", key), iv));

return cipher.DoFinal(System.Text.Encoding.UTF8.GetBytes(plaintext));

}

/// <summary>

/// AES 解密方法

/// </summary>

/// <param name="ciphertext">ciphertext</param>

/// <param name="key">key</param>

/// <param name="iv">iv</param>

/// <returns></returns>

public static string DecryptAES(byte[] ciphertext, byte[] key, byte[] iv)

{

IBufferedCipher cipher = CipherUtilities.GetCipher("AES/CTR/PKCS7Padding");

cipher.Init(false, new ParametersWithIV(ParameterUtilities.CreateKeyParameter("AES", key), iv));

byte[] plaintext = cipher.DoFinal(ciphertext);

return System.Text.Encoding.UTF8.GetString(plaintext);

}

#endregion

#region DES 加密解密示例

/// <summary>

/// DES 加密方法

/// </summary>

/// <param name="plaintext">plaintext</param>

/// <param name="key">key</param>

/// <param name="iv">iv</param>

/// <returns></returns>

public static byte[] EncryptDES(string plaintext, byte[] key, byte[] iv)

{

IBufferedCipher cipher = CipherUtilities.GetCipher("DES/CBC/PKCS7Padding");

cipher.Init(true, new ParametersWithIV(ParameterUtilities.CreateKeyParameter("DES", key), iv));

return cipher.DoFinal(System.Text.Encoding.UTF8.GetBytes(plaintext));

}

/// <summary>

/// DES 解密方法

/// </summary>

/// <param name="ciphertext">ciphertext</param>

/// <param name="key">key</param>

/// <param name="iv">iv</param>

/// <returns></returns>

public static string DecryptDES(byte[] ciphertext, byte[] key, byte[] iv)

{

IBufferedCipher cipher = CipherUtilities.GetCipher("DES/CBC/PKCS7Padding");

cipher.Init(false, new ParametersWithIV(ParameterUtilities.CreateKeyParameter("DES", key), iv));

byte[] plaintext = cipher.DoFinal(ciphertext);

return System.Text.Encoding.UTF8.GetString(plaintext);

}

#endregion

#region RC4 加密解密示例

/// <summary>

/// RC4 加密方法

/// </summary>

/// <param name="plaintext">plaintext</param>

/// <param name="key">key</param>

/// <returns></returns>

public static byte[] EncryptRC4(string plaintext, byte[] key)

{

IStreamCipher cipher = new RC4Engine();

cipher.Init(true, new KeyParameter(key));

byte[] data = System.Text.Encoding.UTF8.GetBytes(plaintext);

byte[] ciphertext = new byte[data.Length];

cipher.ProcessBytes(data, 0, data.Length, ciphertext, 0);

return ciphertext;

}

/// <summary>

/// RC4 解密方法

/// </summary>

/// <param name="ciphertext">ciphertext</param>

/// <param name="key">key</param>

/// <returns></returns>

public static string DecryptRC4(byte[] ciphertext, byte[] key)

{

IStreamCipher cipher = new RC4Engine();

cipher.Init(false, new KeyParameter(key));

byte[] plaintext = new byte[ciphertext.Length];

cipher.ProcessBytes(ciphertext, 0, ciphertext.Length, plaintext, 0);

return System.Text.Encoding.UTF8.GetString(plaintext);

}

#endregion

#region 哈希算法示例

/// <summary>

/// 计算 MD5 哈希

/// </summary>

/// <param name="input">input</param>

/// <returns></returns>

public static string CalculateMD5Hash(string input)

{

IDigest digest = new MD5Digest();

byte[] hash = new byte[digest.GetDigestSize()];

byte[] data = System.Text.Encoding.UTF8.GetBytes(input);

digest.BlockUpdate(data, 0, data.Length);

digest.DoFinal(hash, 0);

return Convert.ToBase64String(hash);

}

/// <summary>

/// 计算 SHA1 哈希

/// </summary>

/// <param name="input">input</param>

/// <returns></returns>

public static string CalculateSHA1Hash(string input)

{

IDigest digest = new Sha1Digest();

byte[] hash = new byte[digest.GetDigestSize()];

byte[] data = System.Text.Encoding.UTF8.GetBytes(input);

digest.BlockUpdate(data, 0, data.Length);

digest.DoFinal(hash, 0);

return Convert.ToBase64String(hash);

}

/// <summary>

/// 计算 SHA256 哈希

/// </summary>

/// <param name="input">input</param>

/// <returns></returns>

public static string CalculateSHA256Hash(string input)

{

IDigest digest = new Sha256Digest();

byte[] hash = new byte[digest.GetDigestSize()];

byte[] data = System.Text.Encoding.UTF8.GetBytes(input);

digest.BlockUpdate(data, 0, data.Length);

digest.DoFinal(hash, 0);

return Convert.ToBase64String(hash);

}

#endregion

}

输出结果:

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看

标签: #bc源码出售平台