我正在寻找两个功能:Decryptstring(string crypted)
和Encryptstring(string uncrypted)
。
这些加密应该由我制作的密钥
组成78998481sad7q431151
使用该密钥,我将始终能够加密和解密字符串......
亲切的问候
答案 0 :(得分:1)
这不是一个答案,这是一些让你的问题更好的建议。
您希望加密有多强大?这只是为了阻止你的小妹妹读书,还是保护商业敏感数据免受黑客攻击?
您想要什么输出?你想要一个字符串,一个可打印的文本字符串或一个字节数组?输出可以比输入长还是限制为相同的大小?
您多久更换一次钥匙?您是否需要强大的KDF(密钥衍生功能)或更简单但更不安全的东西是否足够?
通过在问题中加入更多详细信息,您将获得更具体的答案,这些答案可能对您有用。
答案 1 :(得分:0)
public string Encrypt(string plainMessage, string password)
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.IV = new byte[8];
PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, new byte[0]);
des.Key = pdb.CryptDeriveKey("RC2", "MD5", 128, new byte[8]);
MemoryStream ms = new MemoryStream(plainMessage.Length * 2);
CryptoStream encStream = new CryptoStream(ms, des.CreateEncryptor(),
CryptoStreamMode.Write);
byte[] plainBytes = Encoding.UTF8.GetBytes(plainMessage);
encStream.Write(plainBytes, 0, plainBytes.Length);
encStream.FlushFinalBlock();
byte[] encryptedBytes = new byte[ms.Length];
ms.Position = 0;
ms.Read(encryptedBytes, 0, (int)ms.Length);
encStream.Close();
return Convert.ToBase64String(encryptedBytes);
}
public string DecryptMessage(string encryptedBase64, string password)
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.IV = new byte[8];
PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, new byte[0]);
des.Key = pdb.CryptDeriveKey("RC2", "MD5", 128, new byte[8]);
byte[] encryptedBytes = Convert.FromBase64String(encryptedBase64);
MemoryStream ms = new MemoryStream(encryptedBase64.Length);
CryptoStream decStream = new CryptoStream(ms, des.CreateDecryptor(),
CryptoStreamMode.Write);
decStream.Write(encryptedBytes, 0, encryptedBytes.Length);
decStream.FlushFinalBlock();
byte[] plainBytes = new byte[ms.Length];
ms.Position = 0;
ms.Read(plainBytes, 0, (int)ms.Length);
decStream.Close();
return Encoding.UTF8.GetString(plainBytes);
}