using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Security.Cryptography;
namespace Ship.GlobalMethod
{
public class SymmetricMethod
{
private SymmetricAlgorithm mobjCryptoService;
private string Key;
/// <summary>
/// 对称加密类的构造函数
/// </summary>
public SymmetricMethod()
{
mobjCryptoService = new RijndaelManaged();
Key = "jcsmkjGuz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
}
/// <summary>
/// 获得密钥
/// </summary>
/// <returns>密钥</returns>
private byte[] GetLegalKey()
{
string sTemp = Key;
mobjCryptoService.GenerateKey();
byte[] bytTemp = mobjCryptoService.Key;
int KeyLength = bytTemp.Length;
if (sTemp.Length > KeyLength)
sTemp = sTemp.Substring(0, KeyLength);
else if (sTemp.Length < KeyLength)
sTemp = sTemp.PadRight(KeyLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
/// <summary>
/// 获得初始向量IV
/// </summary>
/// <returns>初试向量IV</returns>
private byte[] GetLegalIV()
{
string sTemp = "jcsmkjE4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
mobjCryptoService.GenerateIV();
byte[] bytTemp = mobjCryptoService.IV;
int IVLength = bytTemp.Length;
if (sTemp.Length > IVLength)
sTemp = sTemp.Substring(0, IVLength);
else if (sTemp.Length < IVLength)
sTemp = sTemp.PadRight(IVLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
/// <summary>
/// 加密方法
/// </summary>
/// <param name="Source">待加密的串</param>
/// <returns>经过加密的串</returns>
public string Encrypto(string Source)
{
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
MemoryStream ms = new MemoryStream();
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
cs.Write(bytIn, 0, bytIn.Length);
cs.FlushFinalBlock();
ms.Close();
byte[] bytOut = ms.ToArray();
return Convert.ToBase64String(bytOut);
}
/// <summary>
/// 解密方法
/// </summary>
/// <param name="Source">待解密的串</param>
/// <returns>经过解密的串</returns>
public string Decrypto(string Source)
{
byte[] bytIn = Convert.FromBase64String(Source);
MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
}
}
}
分享到:
相关推荐
本篇将详细解析标题为“c#版字符串DES加密解密工具源码”的资源,以及相关知识点。 DES(Data Encryption Standard)是一种对称加密算法,它在1970年代由IBM开发并被美国国家标准局采用为标准。DES使用56位的密钥,...
综上所述,用C#创建的字符串加密解密工具结合了C#的加密库和各种加密算法,以确保数据库连接字符串等敏感信息的安全。理解这些概念和技术可以帮助开发者构建更安全的应用程序,保护用户数据免受潜在威胁。
描述中提到的"C#对字符串加密解密dll源码"可能包含一个自定义的加密类库,这个库可能封装了加密和解密的逻辑,允许开发者通过简单调用方法并提供密钥来完成操作。在实际应用中,用户可能需要自定义密钥以增加安全性...
在C#编程语言中,字符串加密解密是信息安全领域中的重要技术,用于保护敏感数据不被非法访问。本文将深入探讨C#中实现字符串加密解密的几种常见方法,包括基本概念、常用库以及具体代码示例。 1. **基础概念** - ...
在提供的压缩包文件"C#字符串加密解密"中,可能包含了关于这些加密解密方法的源代码示例,你可以下载并研究其中的实现细节,以便在自己的项目中灵活运用。记住,理解并正确使用这些工具对于确保应用程序的数据安全性...
本篇将深入探讨如何利用C#和AES(高级加密标准)算法来创建一个文件加密解密工具。 AES是一种对称加密算法,广泛应用于数据保护,因为它既高效又安全。它的基本工作原理是通过一系列复杂的数学运算(如置换、混淆等...
C# RSA加密解密工具是一种基于公钥/私钥对的加密算法实现,主要用于保障数据的安全传输和存储。RSA(Rivest-Shamir-Adleman)算法是公开密钥加密技术的鼻祖,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出...
本文将深入探讨如何使用C#进行字符串加密,并将其保存到文件中,以此来保护您的数据不被未经授权的访问。 首先,我们需要了解基本的加密概念。加密是将明文数据转换成看似随机的密文,以防止未经授权的用户读取。...
通过对C#中的`DeEncode`类进行分析,我们可以了解到如何使用`.NET`框架提供的工具实现基本的对称加密解密操作。尽管这个例子较为基础,但它为我们提供了一个很好的起点,可以在实际项目中进一步扩展和完善。
本文实例讲述了C#实现简易的加密、解密字符串工具类。分享给大家供大家参考。具体如下: 这里的类CypherHelper是一个用于加密、解密字符串的工具类~~~,适合于方便地加密、解密长度较短的密码等字符串(C#里面已经有...
总的来说,C#中的Base64加密解密提供了简单且安全的方法来处理二进制数据,特别是在需要在文本环境(如邮件、网页)中传输时。在WinForm应用中,开发者可以结合UI设计,创建用户友好的工具,方便地进行Base64编码和...
总结来说,C#的Base64加密解密工具提供了对二进制数据的简单编码和解码,方便在各种环境中传递和存储数据。源码的分析有助于开发者理解和掌握这一基础但实用的技术,进一步提高编程能力。在使用过程中,注意正确处理...
在C#中实现RC4加密解密,可以使用System.Security.Cryptography命名空间中的Rfc2898DeriveBytes和RC4类。以下是一个基本的示例: ```csharp using System; using System.IO; using System.Security.Cryptography; ...
根据给定文件的信息,我们可以总结出关于C#中几种常用加密...通过以上代码示例,我们了解了如何在C#中实现DES加密解密、MD5和SHA256散列函数。这些技术在实际开发中非常有用,尤其是在保护用户数据的安全性和隐私方面。
QT字符串加密解密源码是跨平台编程中一个重要的实用技术,特别是在多语言环境中,确保数据的安全传输至关重要。本资源提供了在QT环境下实现的加密解密功能,并且兼容其他多种编程语言,如PHP、C#、Java和Golang,这...
C# 数据库链接字符串加密解密工具代码详解 在软件开发中,保护数据库链接字符串的安全性非常重要,尤其是在WinForm或者是WPF项目中。为了防止项目外泄之后这些信息不被别人看到,我们需要对链接字符串或者其他重要...
总结起来,用C#实现RSA加密与解密涉及了非对称加密原理、`RSACryptoServiceProvider`类的使用、密钥生成与管理、以及可能的用户界面设计。在实际应用中,这些知识可以用于保障数据安全,实现安全的通信和存储。
在C#中,可以使用内置的`System.Security.Cryptography`命名空间实现字符串加密和解密。这个命名空间提供了多种加密算法,如AES(高级加密标准)、DES(数据加密标准)和RSA(公钥加密算法)。这里以AES为例: ```...
在.NET框架中,C#是一种常用的编程语言...总结,C#提供了丰富的加密解密工具,通过正确使用这些工具,可以有效保护敏感数据,防止数据泄露。在实际开发中,结合良好的安全实践,可以为应用程序提供坚实的数据安全防护。
本文将详细介绍如何使用C#语言实现十六进制表示的AES(高级加密标准)加解密,并涉及字节数组工具类的使用。 AES是一种广泛采用的块密码,它基于替换和置换的原理,提供对数据的强加密。在C#中,可以利用.NET框架...