0
目前即时通讯使用System.Security.Cryptography,这是我为它的代码:这是一种加密的好方法吗?
private static SymmetricAlgorithm createCryptoServiceProvider(string key, string IV)
{
byte[] password;
using (MD5 md5 = MD5.Create())
password = md5.ComputeHash(Encoding.UTF8.GetBytes(key));
var crypt = new TripleDESCryptoServiceProvider();
byte[] iv = Encoding.UTF8.GetBytes(IV);
crypt.IV = iv;
crypt.Key = password;
return crypt;
}
public static byte[] Serialize(object obj, string key, string key2)
{
var provider = createCryptoServiceProvider(key, key2);
using (MemoryStream memory = new MemoryStream())
{
using (CryptoStream stream = new CryptoStream(memory, provider.CreateEncryptor(), CryptoStreamMode.Write))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);
}
return memory.ToArray();
}
}
public static object Deserialize(byte[] inBytes, string key, string key2)
{
var provider = createCryptoServiceProvider(key, key2);
using(MemoryStream memory = new MemoryStream(inBytes))
{
using (CryptoStream stream = new CryptoStream(memory, provider.CreateDecryptor(), CryptoStreamMode.Read))
{
BinaryFormatter formatter = new BinaryFormatter();
return formatter.Deserialize(stream);
}
}
}
我用这个准备通过套接字发送数据时,我创建了一个对象,将有钥匙在一个私人字段,并保持密钥,以便知道密钥,当在另一个客户端上接收到对象时,它使用发送的对象内的一个函数,该函数使用该私有字符串密钥key2;并将消息加密为字节,并将密钥设置为“”,然后将对象发回并保存字节。所以现在只有原始发件人才能解密它。这是做这件事的好方法还是有更好的方法?
同意。虽然加密很有趣,但我认为没有必要重新发明轮子。你的代码祝你好运! – SMT 2012-02-27 02:19:48
好的,谢谢你的快速回复,我看到很多关于如何加密的问题,但我不知道哪一个最好。 – Shredder2500 2012-02-27 02:25:18