这是加密的好方法吗
本文关键字:方法 加密 | 更新日期: 2023-09-27 18:25:49
当前正在使用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;并将消息加密为字节,并将密钥设置为",然后将包含字节的对象发回。所以现在只有原始发送者才能解密。这是一个好方法吗?或者有更好的方法吗?
不要自己尝试加密。
http://msdn.microsoft.com/en-us/library/system.net.security.sslstream.aspx
示例代码使用TcpClient,但它应该与任何流IO一起工作,因此直接套接字也应该可以。