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