I don't know about trends :-) but we do encrypt it, the connection string looks something like this:
data source=source;initial catalog=cat;User Id=UID;Password=CA4D49B9832A06FF
The code to read it is simple enough, using System.Security.Cryptography.
I'll paste the core below:
public static string DecryptDBPassConnectString(byte[] key,string connString) {
string decryptedDBPassConnString = String.Empty;
string passPart;
string encPass;
string decPass;
int startIndex = connString.ToUpper().IndexOf("PASSWORD");
int endIndex;
if (startIndex >= 0) {
endIndex = connString.IndexOf(";",startIndex);
passPart = connString.Substring(startIndex,endIndex-startIndex);
encPass = passPart.Split('=')[1].Trim();
decPass = new SecurityHandler(key).Decrypt(encPass);
decryptedDBPassConnString = connString.Substring(0,startIndex);
decryptedDBPassConnString += passPart.Split('=')[0] + "=" + decPass +
connString.Substring(endIndex,connString.Length -endIndex );
}
return decryptedDBPassConnString;
}
public string Decrypt(string text) {
CryptoStream decryptorStream = new CryptoStream(
_3DESDecryptorStream,
_3DESCryptoServiceProvider.CreateDecryptor(),
CryptoStreamMode.Write);
byte[] dataToDecrypt = ASCII.ToBIN(text);
// Decrypt data.
_3DESDecryptorStream.Seek(0, SeekOrigin.Begin);
_3DESDecryptorStream.SetLength(0);
decryptorStream.Write(dataToDecrypt, 0, dataToDecrypt.Length);
_3DESDecryptorStream.Seek(0, SeekOrigin.Begin);
byte[] encData = new byte[_3DESDecryptorStream.Length];
for (int i = 0; i < _3DESDecryptorStream.Length; i++) {
encData[i] = (byte) _3DESDecryptorStream.ReadByte();
}
string buff = ASCIIEncoding.ASCII.GetString(encData);
char end = (char) 127;
return buff.TrimEnd(end);
}