展开全部
很简单,C#自带了很多算法,DES,RSA,这些都可以自己加密解密。
前面一个人说的MD5就没法解密的了,那个是标签类加密不可逆。
可以自己百度我说的两个,也可以直接问我这代码怎么写。
前面一个人说的MD5就没法解密的了,那个是标签类加密不可逆。
可以自己百度我说的两个,也可以直接问我这代码怎么写。
更多追问追答
追问
能给我个例子吗?我都不知道代码该写到哪去,我现在设计了个登录界面,连接了数据库,可以在datagirdview中显示数据库中的数据了。要把加密解密的代码加到哪里去呢?
追答
你那个是WINFORM的控件,不能直接做业务逻辑处理,代码当然要写在控件的相应事件里,例如你datagridview某个项被选中,然后点某个按钮执行加密之类对那行某字段进行加密。
刚刚帮你敲了下加密的东西,我封装成一个函数,你直接调用即可
public string EncryptDES(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.UTF8.GetBytes(EncryptString);
MemoryStream m_stream = new MemoryStream();
CryptoStream m_cstream = new CryptoStream(m_stream, m_DESProvider.CreateEncryptor(Encoding.UTF8.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);
m_cstream.Write(m_btEncryptString, 0, m_btEncryptString.Length);
m_cstream.FlushFinalBlock();
byte[] b = m_stream.ToArray();
for (int i = 0; i < b.Length; i++)
m_strEncrypt += b[i].ToString("X").PadLeft(2, '0');
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询