数据库透明加密系统主要有四个功能:
1. 对敏感数据进行加密,避免与敏感数据的直接接触。这项功能主要用于防止三种情况的发生,首先,通过对敏感数据进行透明加密阻断入侵者访问敏感数据,构成数据库的最后一道防线。其次,阻断运维人员任意访问敏感数据,数据库透明加密系统可以保护运维人员,避免犯错。最后,透明加密系统可以实现,即使在数据库中的物理文件或者备份文件失窃的情况下,依然保证敏感数据的安全性。
2. 数据库透明加密系统,无需改变任何应用。首先,在对数据进行透明加密时,无需知道密钥,无需改变任何代码,即可透明访问加密的敏感数据。其次,对敏感数据进行加解密的过程透明简易,可以保证业务程序的连续性,以及保证业务程序不被损伤。
3. 数据库透明加密系统提供多维度的访问控制管理,且系统性能消耗非常低。通常数据库实施透明加密后,整体性能下降不超过10%。
4. 最重要的是,数据库透明加密系统满足合规要求,满足网络安全法、信息安全等级保护、个人信息安全规范等对于敏感数据加密明确的要求。
另外数据库透明加密系统可以实现物理旁路部署模式和反向代理两种部署模式。采用旁路部署模式,即在数据库服务器安装数据库透明加密安全代理软件,不需要调整任何网络架构。数据库透明加密后批量增删改性能影响较小,整体满足合规要求,管理便捷。反向代理部署模式,是物理层根据表、列等数据分类执行数据存储加密,防止存储层面数据丢失引起泄露,逻辑层通过加密网关实现运维管理端的密文访问控制,整体实现业务数据正常访问,运维授权访问,同时提供直连控制访问,部署更安全。
最基本的做法就是使用加密工具,先把字符串加密,之后用配置文件的方法,添加到你的项目中;然后通过程序的运行,动态的将加密过的字符串进行逆转 *** 作,恢复成123456,你需要考虑的是,哪种加密方式可以逆反 *** 作,MD5这样的方式似乎只能进行单向的加密,其实,加密方式也就是一个计算的过程。
希望可以帮助到你~!
我来回答吧: 不懂可以Hi,我一般都是这么做的先给你个加密和解密类
告诉你个加密 解密类。
using System
using System.IO
using System.Security.Cryptography
namespace CryptInfoNameSpace
{
class CryptInfo
{
//加密
public static string Encrypt(string text)
{
Rijndael crypt=Rijndael.Create()
byte[] key=new byte[32]{0XA6,0X7D,0XE1,0X3F,0X35,0X0E,0XE1,0XA9,0X83,0XA5,0X62,0XAA,0X7A,0XAE,0X79,0X98,
0XA7,0X33,0X49,0XFF,0XE6,0XAE,0XBF,0X8D,0X8D,0X20,0X8A,0X49,0X31,0X3A,0X12,0X40}
byte[] iv=new byte[16]{0XF8,0X8B,0X01,0XFB,0X08,0X85,0X9A,0XA4,0XBE,0X45,0X28,0X56,0X03,0X42,0XF6,0X19}
crypt.Key=key
crypt.IV=iv
MemoryStream ms=new MemoryStream()
ICryptoTransform transformEncode=new ToBase64Transform()
//Base64编码
CryptoStream csEncode=new CryptoStream(ms,transformEncode,CryptoStreamMode.Write)
CryptoStream csEncrypt=new CryptoStream(csEncode,crypt.CreateEncryptor(),CryptoStreamMode.Write)
System.Text.UTF8Encoding enc=new System.Text.UTF8Encoding()
byte[] rawData=enc.GetBytes(text)
csEncrypt.Write(rawData,0,rawData.Length)
csEncrypt.FlushFinalBlock()
byte[] encryptedData=new byte[ms.Length]
ms.Position=0
ms.Read(encryptedData,0,(int)ms.Length)
return enc.GetString(encryptedData)
}
//解密,加密解密中的 byte[] key,byte[] iv可以自行修改,加密解密的 数组值一定一致,否则无法对应加密 解密。
public static string Decrypt(string text)
{
Rijndael crypt=Rijndael.Create()
byte[] key=new byte[32]{0XA6,0X7D,0XE1,0X3F,0X35,0X0E,0XE1,0XA9,0X83,0XA5,0X62,0XAA,0X7A,0XAE,0X79,0X98,
0XA7,0X33,0X49,0XFF,0XE6,0XAE,0XBF,0X8D,0X8D,0X20,0X8A,0X49,0X31,0X3A,0X12,0X40}
byte[] iv=new byte[16]{0XF8,0X8B,0X01,0XFB,0X08,0X85,0X9A,0XA4,0XBE,0X45,0X28,0X56,0X03,0X42,0XF6,0X19}
crypt.Key=key
crypt.IV=iv
MemoryStream ms=new MemoryStream()
CryptoStream csDecrypt=new CryptoStream(ms,crypt.CreateDecryptor(),CryptoStreamMode.Write)
ICryptoTransform transformDecode=new FromBase64Transform()
CryptoStream csDecode=new CryptoStream(csDecrypt,transformDecode,CryptoStreamMode.Write)
System.Text.UTF8Encoding enc=new System.Text.UTF8Encoding()
byte[] rawData=enc.GetBytes(text)
csDecode.Write(rawData,0,rawData.Length)
csDecode.FlushFinalBlock()
byte[] decryptedData=new byte[ms.Length]
ms.Position=0
ms.Read(decryptedData,0,(int)ms.Length)
return(enc.GetString(decryptedData))
}
}
}
在项目中 引用该类,
下面个思路:
把数据连接字符串 ,经过CryptInfoNameSpace.CryptInfo.Encrypt(string text)加密后 ,写入配置文件inf 或者 配置文件txt文件。
当执行Main函数时,读取配置文件,(如果配置文件不存在,或者读取错误, 重新加密的数据库连接字符串加密后写入配置文件)。然后通过函数 CryptInfoNameSpace.CryptInfo.Decrypt(string text)方法解密成原文连接字符串,并传递给其他类使用。即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)