首页 > 动态中心 > 技术文章  >  正文

常用数据加解密原理和方法

2023-06-15 00:00:00

文章摘要: 一、数据加密概念  1 .基本概念  2 .基本功能  3 .加密格式  二、数据加密的项目应用与学习  1、媒体加密: DRM  2 .文件加密:文本加密、pdf、word  3、数据加密:在ASP.NET(C#井)中进行数据加密  4、硬件加密:加密狗  三、数据加密的发展趋势  四、网络数据加密算法的分类  1、完全不考虑解密问题: MD5、  2 .私钥加密: DES、AES  3 .

  一、数据加密概念
  1 .基本概念
  2 .基本功能
  3 .加密格式

  二、数据加密的项目应用与学习
  1、媒体加密: DRM
  2 .文件加密:文本加密、pdf、word
  3、数据加密:在ASP.NET(C#井)中进行数据加密
  4、硬件加密:加密狗

  三、数据加密的发展趋势

  四、网络数据加密算法的分类
  1、完全不考虑解密问题: MD5、
  2 .私钥加密: DES、AES
  3 .公用密钥加密: RSA
  4、数字证书

  五、对称加密的DES加密和解密讲义

  六、讲授非对称加密的RSA加密和解密

  七、ASP.NET(C#井)中常用加密类实例调用的讲义

  ASP.NET(C#井)中常用的数据加密和解密方法摘要
  数据加密技术是网络中最基本的安全性技术,主要是通过对经由网络发送的信息进行数据加密来确保安全性的前瞻性安全措施,其可以以极少的成本为信息提供极大的安全保护。

  一、加密的基本概念
  “加密”是限制访问网络上的传输数据的技术。 原始数据(也称为明文,plaintext )与被加密的设备(硬件或软件)用密钥加密而生成的加密数据称为密文( ciphertext )。 将密文恢复为原始明文的过程称为解密,这是加密的逆过程,但是解密者需要使用相同类型的加密设备和密钥来解密该密文。

  加密的基本功能是:
  1 .防止不愉快的客人看到机密的数据文件
  2 .防止机密数据的泄露和篡改
  3 .防止特权用户(如系统管理员)查看个人数据文件
  4 .防止入侵者轻易找到系统文件。

  数据加密是确保计算机网络安全的重要机制,由于成本、技术和管理复杂性等原因,目前尚未普及到网络中,但数据加密确实是分布式系统和网络环境下实现数据安全的重要手段之一。

  数据加密可用于网络OSI第7层协议( OSI是Open System Interconnect的缩写,表示开放系统互连)。 国际标准组织(国际标准化组织)制定了OSI模式。 该模型将网络通信功能分为7层:物理层、数据链路层、网络层、传输层、会话层、呈现层和应用层。 )的多层实现,从加密技术的应用的逻辑位置来看,有三种方案:

  ①链路加密:通常将网络层以下的密码称为链路加密,主要保护在通信节点之间传送的数据,对密码进行解密,由设置在线路上的密码装置实现。 根据传递的数据同步方式,分为同步通信加密和异步通信加密,同步通信加密包括字节同步通信加密和位同步通信加密。

  ②节点加密:链路加密的改进。 在协议传输层进行加密主要是通过对源节点和目标节点之间的传输数据进行加密和保护,与链路加密类似。 加密算法仅耦合到连接到节点的加密模块,就克服了链路加密容易被节点非法访问的缺点。

  ③端到端加密:网络层以上的加密称为端到端加密。 适用于网络层主体。 应用层的数据信息的加密可以以软件来容易地实现和以低成本在密钥管理方面遇到困难并且主要适用于在大型网络系统中在多个始发者和接收者之间传输信息。

  二、数据加密的应用

  1、媒体加密: DRM
  2 .文件加密:文本加密、pdf、word
  3、数据加密:在ASP.NET(C#井)中进行数据加密
  4、硬件加密:加密狗

  三、加密技术的发展趋势

  ①私钥加密技术和公钥加密技术相结合的:考虑到两种加密方式的加密特征,可以在实际应用中采用妥协方案。 将DES/IDEA和RSA组合起来,将DES设为“内核”,将RSA设为“shell”,在网络中传输的数据可以在DES或IDEA中加密,加密用的密钥可以在RSA中加密后传输。 该方法保证了数据的安全性,提高了加密和解密的速度,这也是当前加密技术发展的新方向之一。

  ②寻求新算法:脱离基于常见迭代的结构思路,脱离基于数学问题复杂度的结构方法。 如刘尊全提出的刘氏算法,采用基于密钥的公钥方式,采用随机原理结构加以解密变换,将其全部运算控制隐藏在密钥中,密钥长度可变。 选择一定长度的分割构建大搜索空间,实现非线性变换。 该加密算法加密强度高,速度快,计算开销低。

  ③加密最终与系统和网络相集成。 例如,IPV6协议已经支持内置加密,英特尔在硬件方面开发了加密协议。 能够集成在微机的主极上。

  四、密码技术的分类

  加密类型可以简单地分为四种类型:

  1 .完全不考虑解密问题

  2 .私钥加密技术:对称加密( Symmetric Key Encryption ) :对称加密方法使用相同的密钥进行加密和解密。 通常,该加密方式难以以相同的安全方式共享密钥,所以在应用中难以实现。 包括RC4、RC2、DES和AES系列加密算法。

  3 .公钥加密技术:不对称密钥加密:不对称密钥加密使用一组公共/私钥系统,在加密中使用一个密钥,而在解密中使用另一个密钥。 公钥可以广泛共享和公开。 如果需要将数据加密并传输到服务器外部,则此加密方法非常有用。 例如RSA

  4 .数字证书。 ( Certificate ) :数字证书是非对称密钥加密,但是组织可以使用证书通过数字签名将一组公钥和私钥与所有者相关联。

  五、对称加密的DES加密和解密

  一、对称加密
  对称加密是在加密运算、解密运算中使用相同密钥的传统的加密方式,信息的始发者和信息的接收者在进行信息的传送和处理时必须共享该加密(称为对称加密)。 因此,通信双方必须得到该密钥并保持密钥秘密。

  单密钥加密系统的安全性取决于以下两个因素:

  第一,加密算法必须足够强,仅基于密文本身解密信息在实践中是不可能的。

  其次,加密方法的安全性取决于密钥机密性,而不是算法的机密性,因此无需确保算法的机密性(实际公开了许多实际使用的单密钥加密系统的算法),但是我们还必须确保密钥机密性。

  des (数据加密标准)和TripleDES是对称加密的两种实现。

  DES和TripleDES的基本算法是一致的,但TripleDES算法所提供的key比特数多,加密的可靠性高。

  在DES中使用的密钥key是8字节,初始向量IV也是8字节。

  TripleDES使用24字节的key,初始向量IV也是8字节。

  两种算法都将8字节加密为1块,1块是1块的加密,1字节的明文加密的密文也是8字节。 如果明文长度不是8字节的整数倍,则将值为0的字节与8字节的整数倍相加。 加密密文的长度必须是8字节的整数倍。

  二、密码解读过程

  Figure 1. DES加密解密过程

  DES和TripleDES算法的整体加密解密过程,接着以TripleDES为例结合dotnet来分析加密解密的各个步骤,并提供相关的实现代码。

  请注意,如果DES加密是以块为单位加密的,并且是8字节1块,并且要加密的明度byte[]的长度不是8字节的整数倍,则算法会先用值为“0”的byte补充8字节,然后再进行加密。 加密的密文长度必须是8的整数倍。 如果在这样的密文的解密后补充0值的byte,则在解密后这些0值的byte依然存在。 例如,在上例中加密的明文如下:

  "这里是要加密的数据. "

  转换为明文byte[]时变为66字节,DES算法将0值byte补充为6字节、72字节。 这样加密解密的密文byte[]解密的字符串如下所示

  “这里是要加密的数据。 \0\0\0\0\0'

  5、从编码字节变成流字符串的明文

  //使用以前定义的Encoding,在utf-8编码中将byte[]转换为字符串
  plaintext string=encoding.getstring ( finalplaintextarray )

  6、非对称加密的RSA加密和解密说明RSA公钥加密算法是Ron Rivest、Adi Shamirh和LenAdleman于1977年开发的。 RSA的名字来源于开发人员的三个名字。 RSA是目前最具影响力的公钥加密算法,能够抵抗所有已知的密码攻击。 作为公钥数据加密标准被ISO推荐。 RSA算法是基于非常简单的数学事实的:虽然很容易将两个大素数相乘,但是因为在那时很难对乘积进行因式分解,所以可以将乘积公布为加密密钥。 RSA算法是第一种可用于加密和数字签名的算法,易于理解和使用。

  RSA是研究最广泛的公钥算法,从提交到现在的二十年,经历了各种攻击的考验,逐渐被人们所接受,被认为是目前最好的公钥方案之一。 RSA的安全性依赖于数据因子分解,但理论上没有证明破译RSA的难度等同于数据分解的难度。 也就是说,RSA的重大缺陷是其保密性能无法理论把握,密码学界的大多数人都倾向于因子分解不是NPC问题。

  RSA的缺点主要包括:

  a )生成密钥很麻烦,并且受素数生成技术的限制,因此一次难以保密。

  b )为了确保分组长度过大、安全性,随着大容量分解技术的发展,至少n为600比特或更高,运算成本高,尤其是速率慢,比对称加密算法慢几位,这是可能的。

  长度增加,不利于数据格式的标准化。 当前,set (安全电子传输)协议要求CA使用长度为2048比特的密钥,而其它实体使用长度为1024比特的密钥。 C)RSA密钥的长度随密度的增加而迅速增加。 下表列出了相同安全级别的密钥长度。

C#代码实现

需引用using System.Security.Cryptography;

复制代码

/// <summary>
/// RSA加密
/// </summary>
/// <param name="publickey"></param>
/// <param name="content"></param>
/// <returns></returns>
public static string RSAEncrypt(string publickey, string content)
{
publickey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(publickey);
cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);

return Convert.ToBase64String(cipherbytes);
}

/// <summary>
/// RSA解密
/// </summary>
/// <param name="privatekey"></param>
/// <param name="content"></param>
/// <returns></returns>
public static string RSADecrypt(string privatekey, string content)
{
privatekey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent><P>/hf2dnK7rNfl3lbqghWcpFdu778hUpIEBixCDL5WiBtpkZdpSw90aERmHJYaW2RGvGRi6zSftLh00KHsPcNUMw==</P><Q>6Cn/jOLrPapDTEp1Fkq+uz++1Do0eeX7HYqi9rY29CqShzCeI7LEYOoSwYuAJ3xA/DuCdQENPSoJ9KFbO4Wsow==</Q><DP>ga1rHIJro8e/yhxjrKYo/nqc5ICQGhrpMNlPkD9n3CjZVPOISkWF7FzUHEzDANeJfkZhcZa21z24aG3rKo5Qnw==</DP><DQ>MNGsCB8rYlMsRZ2ek2pyQwO7h/sZT8y5ilO9wu08Dwnot/7UMiOEQfDWstY3w5XQQHnvC9WFyCfP4h4QBissyw==</DQ><InverseQ>EG02S7SADhH1EVT9DD0Z62Y0uY7gIYvxX/uq+IzKSCwB8M2G7Qv9xgZQaQlLpCaeKbux3Y59hHM+KpamGL19Kg==</InverseQ><D>vmaYHEbPAgOJvaEXQl+t8DQKFT1fudEysTy31LTyXjGu6XiltXXHUuZaa2IPyHgBz0Nd7znwsW/S44iql0Fen1kzKioEL3svANui63O3o5xdDeExVM6zOf1wUUh/oldovPweChyoAdMtUzgvCbJk1sYDJf++Nr0FeNW1RB1XG30=</D></RSAKeyValue>";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(privatekey);
cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false);

return Encoding.UTF8.GetString(cipherbytes);
}
复制代码

七、ASP.NET(C#)常用加密类调用的讲解

1、C#常用加密解密类库代码如下:

复制代码

/// <summary>
/// MD5 加密静态方法
/// </summary>
/// <param name="EncryptString">待加密的密文</param>
/// <returns>returns</returns>
public static string MD5Encrypt(string EncryptString)
{
if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); }
MD5 m_ClassMD5 = new MD5CryptoServiceProvider();
string m_strEncrypt = "";
try
{
m_strEncrypt = BitConverter.ToString(m_ClassMD5.ComputeHash(Encoding.Default.GetBytes(EncryptString))).Replace("-", "");
}
catch (ArgumentException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_ClassMD5.Clear(); }
return m_strEncrypt;
}

/// <summary>
/// DES 加密(数据加密标准,速度较快,适用于加密大量数据的场合)
/// </summary>
/// <param name="EncryptString">待加密的密文</param>
/// <param name="EncryptKey">加密的密钥</param>
/// <returns>returns</returns>
public static string DESEncrypt(string EncryptString, string EncryptKey)
{
if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); }
if (string.IsNullOrEmpty(EncryptKey)) { throw (new Exception("密钥不得为空")); }
if (EncryptKey.Length != 8) { throw (new Exception("密钥必须为8位")); }
byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
string m_strEncrypt = "";
DESCryptoServiceProvider m_DESProvider = new DESCryptoServiceProvider();
try
{
byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_cstream = new CryptoStream(m_stream, m_DESProvider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);
m_cstream.Write(m_btEncryptString, 0, m_btEncryptString.Length);
m_cstream.FlushFinalBlock();
m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());
m_stream.Close(); m_stream.Dispose();
m_cstream.Close(); m_cstream.Dispose();
}
catch (IOException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (ArgumentException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_DESProvider.Clear(); }
return m_strEncrypt;
}

/// <summary>
/// DES 解密(数据加密标准,速度较快,适用于加密大量数据的场合)
/// </summary>
/// <param name="DecryptString">待解密的密文</param>
/// <param name="DecryptKey">解密的密钥</param>
/// <returns>returns</returns>
public static string DESDecrypt(string DecryptString, string DecryptKey)
{
if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得为空")); }
if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密钥不得为空")); }
if (DecryptKey.Length != 8) { throw (new Exception("密钥必须为8位")); }
byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
string m_strDecrypt = "";
DESCryptoServiceProvider m_DESProvider = new DESCryptoServiceProvider();
try
{
byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_cstream = new CryptoStream(m_stream, m_DESProvider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);
m_cstream.Write(m_btDecryptString, 0, m_btDecryptString.Length);
m_cstream.FlushFinalBlock();
m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());
m_stream.Close(); m_stream.Dispose();
m_cstream.Close(); m_cstream.Dispose();
}
catch (IOException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (ArgumentException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_DESProvider.Clear(); }
return m_strDecrypt;
}
/// <summary>
/// RC2 加密(用变长密钥对大量数据进行加密)
/// </summary>
/// <param name="EncryptString">待加密密文</param>
/// <param name="EncryptKey">加密密钥</param>
/// <returns>returns</returns>
public static string RC2Encrypt(string EncryptString, string EncryptKey)
{
if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); }
if (string.IsNullOrEmpty(EncryptKey)) { throw (new Exception("密钥不得为空")); }
if (EncryptKey.Length < 5 || EncryptKey.Length > 16) { throw (new Exception("密钥必须为5-16位")); }
string m_strEncrypt = "";
byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
RC2CryptoServiceProvider m_RC2Provider = new RC2CryptoServiceProvider();
try
{
byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_cstream = new CryptoStream(m_stream, m_RC2Provider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);
m_cstream.Write(m_btEncryptString, 0, m_btEncryptString.Length);
m_cstream.FlushFinalBlock();
m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());
m_stream.Close(); m_stream.Dispose();
m_cstream.Close(); m_cstream.Dispose();
}
catch (IOException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (ArgumentException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_RC2Provider.Clear(); }
return m_strEncrypt;
}

/// <summary>
/// RC2 解密(用变长密钥对大量数据进行加密)
/// </summary>
/// <param name="DecryptString">待解密密文</param>
/// <param name="DecryptKey">解密密钥</param>
/// <returns>returns</returns>
public static string RC2Decrypt(string DecryptString, string DecryptKey)
{
if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得为空")); }
if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密钥不得为空")); }
if (DecryptKey.Length < 5 || DecryptKey.Length > 16) { throw (new Exception("密钥必须为5-16位")); }
byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
string m_strDecrypt = "";
RC2CryptoServiceProvider m_RC2Provider = new RC2CryptoServiceProvider();
try
{
byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_cstream = new CryptoStream(m_stream, m_RC2Provider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);
m_cstream.Write(m_btDecryptString, 0, m_btDecryptString.Length);
m_cstream.FlushFinalBlock();
m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());
m_stream.Close(); m_stream.Dispose();
m_cstream.Close(); m_cstream.Dispose();
}
catch (IOException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (ArgumentException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_RC2Provider.Clear(); }
return m_strDecrypt;
}

/// <summary>
/// 3DES 加密(基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高)
/// </summary>
/// <param name="EncryptString">待加密密文</param>
/// <param name="EncryptKey1">密钥一</param>
/// <param name="EncryptKey2">密钥二</param>
/// <param name="EncryptKey3">密钥三</param>
/// <returns>returns</returns>
public static string DES3Encrypt(string EncryptString, string EncryptKey1, string EncryptKey2, string EncryptKey3)
{
string m_strEncrypt = "";
try
{
m_strEncrypt = DESEncrypt(EncryptString, EncryptKey3);
m_strEncrypt = DESEncrypt(m_strEncrypt, EncryptKey2);
m_strEncrypt = DESEncrypt(m_strEncrypt, EncryptKey1);
}
catch (Exception ex) { throw ex; }
return m_strEncrypt;
}

/// <summary>
/// 3DES 解密(基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高)
/// </summary>
/// <param name="DecryptString">待解密密文</param>
/// <param name="DecryptKey1">密钥一</param>
/// <param name="DecryptKey2">密钥二</param>
/// <param name="DecryptKey3">密钥三</param>
/// <returns>returns</returns>
public static string DES3Decrypt(string DecryptString, string DecryptKey1, string DecryptKey2, string DecryptKey3)
{
string m_strDecrypt = "";
try
{
m_strDecrypt = DESDecrypt(DecryptString, DecryptKey1);
m_strDecrypt = DESDecrypt(m_strDecrypt, DecryptKey2);
m_strDecrypt = DESDecrypt(m_strDecrypt, DecryptKey3);
}
catch (Exception ex) { throw ex; }
return m_strDecrypt;
}

/// <summary>
/// AES 加密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
/// </summary>
/// <param name="EncryptString">待加密密文</param>
/// <param name="EncryptKey">加密密钥</param>
/// <returns></returns>
public static string AESEncrypt(string EncryptString, string EncryptKey)
{
if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); }
if (string.IsNullOrEmpty(EncryptKey)) { throw (new Exception("密钥不得为空")); }
string m_strEncrypt = "";
byte[] m_btIV = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");
Rijndael m_AESProvider = Rijndael.Create();
try
{
byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);
m_csstream.Write(m_btEncryptString, 0, m_btEncryptString.Length); m_csstream.FlushFinalBlock();
m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());
m_stream.Close(); m_stream.Dispose();
m_csstream.Close(); m_csstream.Dispose();
}
catch (IOException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (ArgumentException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_AESProvider.Clear(); }
return m_strEncrypt;
}

/// <summary>
/// AES 解密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
/// </summary>
/// <param name="DecryptString">待解密密文</param>
/// <param name="DecryptKey">解密密钥</param>
/// <returns></returns>
public static string AESDecrypt(string DecryptString, string DecryptKey)
{
if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得为空")); }
if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密钥不得为空")); }
string m_strDecrypt = "";
byte[] m_btIV = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");
Rijndael m_AESProvider = Rijndael.Create();
try
{
byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);
m_csstream.Write(m_btDecryptString, 0, m_btDecryptString.Length); m_csstream.FlushFinalBlock();
m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());
m_stream.Close(); m_stream.Dispose();
m_csstream.Close(); m_csstream.Dispose();
}
catch (IOException ex) { throw ex; }
catch (CryptographicException ex) { throw ex; }
catch (ArgumentException ex) { throw ex; }
catch (Exception ex) { throw ex; }
finally { m_AESProvider.Clear(); }
return m_strDecrypt;
}
复制代码

2、数据加密和解密简单代码调用如下:

Response.Write("<br>-----------MD5加密---------------<br>");

Response.Write(SDKSecurity.MD5Encrypt("仰天一笑"));
Response.Write("<br>-----------DES加密---------------<br>");

Response.Write(SDKSecurity.DESEncrypt("仰天一笑", "anson-xu"));

Response.Write("<br>-----------DES解密---------------<br>");

Response.Write(SDKSecurity.DESDecrypt("l06JvJ45r/lb9iKzSXl47Q==", "anson-xu"));
Response.Write("<br>-----------AES加密---------------<br>");

Response.Write(SDKSecurity.AESEncrypt("仰天一笑", "ansonxuyu"));

Response.Write("<br>-----------AES解密---------------<br>");

Response.Write(SDKSecurity.AESDecrypt("avwKL+MO8+zoLHvzk0+TBA==", "ansonxuyu"));

3、数据加密和解密调用后运行效果图如下:

上一篇 : 文件防泄密配置指南,如何选择更好的企业加密软件?
  • 相关推荐
  • 企业防范数据泄露手段有哪些?企业必备七项防护措施

    在当今信息化社会,数据已成为企业的核心资产。然而,数据泄露事件频发,给企业带来了严重的经济损失和声誉损害。为了有效防范数据泄露,企业必须采取一系列防护措施。本文将介绍七项企业必备的防护措施,从技术手段到管理层面,全方位守护企业的数据安全,确保企业信息资产的安全无虞。1、 数据加密(洞察眼MIT系统)透明加密:确保数据在...

    2024-10-19 10:03:02
  • 企业数据安全新解:透明加密VS半透明加密VS智能化加密

    洞察眼MIT系统的文件加密概述该系统是一款功能强大的企业级文件加密及防泄密软件,采用了先进的加密技术和安全策略,能够对企业的重要数据进行全面、深入的保护。无论是存储在本地计算机上的文件,还是通过网络传输的数据,都能提供有效的加密保护,确保数据在传输和存储过程中的安全。1、透明加密加密方式:透明加密是一种强制加密技术,通...

    2024-10-19 08:49:58
  • 电脑文件加密必备!2024精选十款加密软件,保护数据安全

    在数字化时代,数据安全已成为不可忽视的重要议题。为了守护您宝贵的文件信息,我们精心挑选了十款2024年的电脑文件加密软件。这些软件各具特色,采用先进的加密技术,确保您的数据在存储和传输过程中的安全性。无论是个人用户还是企业用户,都能在这些软件中找到适合自己的加密解决方案,让数据安全无忧,尽享数字生活的便捷与安心。1、洞...

    2024-10-18 14:55:23
  • 加密软件有哪些?精选六款加密软件,让企业数据更安全!

    在数字化时代,企业数据的安全至关重要。为了保障企业信息的机密性和完整性,选择一款合适的加密软件显得尤为重要。本文精选了六款加密软件,它们各具特色,功能强大,能够为企业提供全方位的数据加密保护。这些软件都能确保企业数据在传输和存储过程中的安全,助力企业构建坚不可摧的数据安全防线。1、洞察眼MIT系统采用先进的加密算法,能...

    2024-10-17 10:50:10
  • 数据怎么加密?2024年五款企业数据加密必备软件

    在数字化时代,数据安全已成为企业不可忽视的核心议题。为了确保敏感信息不被泄露,数据加密成为了企业保护资产的重要手段。2024年,市场上涌现了众多优秀的企业数据加密软件。本文将为您精选五款必备的数据加密软件,它们各具特色,能够为企业数据提供全面而高效的保护。让我们一起探索这些加密利器,共同守护企业的数字资产安全。1、洞察...

    2024-10-17 09:51:22
  • 软件界大PK!年度精选!2024数据防泄密软件前十强

    在数字时代,数据的安全与保密成为了企业生存的命脉。2024年,众多数据防泄密软件如雨后春笋般涌现,它们各自施展绝技,为企业的信息安全保驾护航。本篇将精选出年度前十强数据防泄密软件,它们凭借卓越的性能、智能的防护和便捷的操作,赢得了市场的广泛认可。让我们一同走进这场软件界的大PK,见证数据防泄密技术的最新成果!1、洞察眼...

    2024-10-17 09:49:40
  • 企业防范数据泄露方法有哪些?八个实用防泄密方法

    在数字化时代,企业数据如同生命之源,其安全关乎企业的生死存亡。面对日益严峻的数据泄露风险,企业必须筑起坚实的防线。以下八个实用防泄密方法,旨在为企业提供一套全面、高效的数据保护策略,确保企业数据在存储、传输、处理等各个环节中的安全性,助力企业稳健前行,在激烈的市场竞争中立于不败之地。1、使用专业软件—洞察眼MIT系统透...

    2024-10-15 14:00:13
  • 如何给U盘加密?U盘加密必备五招,保护U盘数据

    在数据泄露风险日益加剧的今天,U盘作为便携的数据存储工具,其安全性显得尤为重要。如何给U盘加密,确保数据在传输和存储过程中的安全,成为每个人都需要掌握的技能。以下五招U盘加密必备技巧,将帮助您轻松提升U盘数据的安全性,让您的数据隐私得到更有效的保护。让我们一同学习,为数据安全保驾护航。方法一:使用专业软件(洞察眼MIT...

    2024-10-15 09:45:43
  • 怎么防止u盘里的东西被拷贝?U盘数据安全:六招防拷贝秘籍

    在数字化时代,U盘作为便携的数据存储工具,其安全性尤为重要。如何防止U盘里的数据被非法拷贝,成为保护个人隐私和企业机密的关键。以下六招防拷贝秘籍,全方位守护您的U盘数据安全。让我们一起学习,确保数据在传输和存储过程中的安全无忧。一、U盘加密软件加密:利用专业的加密软件(如BitLocker、FileVault、安全神等...

    2024-10-15 09:43:45
  • U盘安全无忧:U盘防复制防拷贝怎么办?精选七款U盘数据保护软件

    在数字化办公日益普及的今天,U盘作为数据交换的重要工具,其安全性显得尤为重要。为防止数据泄露,精选七款U盘数据保护软件,它们各具特色,能够有效防止数据被非法复制和拷贝。这些软件通过加密、权限控制等技术手段,为U盘数据筑起了一道坚固的安全屏障,让您的U盘使用更加安心无忧。1、洞察眼MIT系统该系统采用透明加密技术,对存储...

    2024-10-12 10:15:02

大家都在搜的词:

微信扫一扫联系售前工程师