一個值得思考的問題:加密的ID是否真的和ID有區別?畢竟,它仍然是一個獨特的ID,對吧?
這且不說,這裏有一個小東西,我用的時候我需要加密的東西,往返到客戶端:
public static class MachineKeyEncryptionExtensions
{
private static ThreadLocal<BinaryFormatter> formatterPool =
new ThreadLocal<BinaryFormatter>(() => new BinaryFormatter());
public static string Encrypt(this object rci)
{
byte[] data;
using (var ms = new MemoryStream())
{
formatterPool.Value.Serialize(ms, rci);
data = ms.ToArray();
}
var ba=MachineKey.Protect(data, "encrypted data");
return Convert.ToBase64String(ba);
}
public static T Decrypt<T>(this string encrypted)
{
var ba = Convert.FromBase64String(encrypted);
var decodedArr=MachineKey.Unprotect(ba, "encrypted data");
object o;
using (var ms = new MemoryStream(decodedArr))
{
o = formatterPool.Value.Deserialize(ms);
}
return (T)o;
}
public static byte[] StringToByteArray(String hex)
{
int numberChars = hex.Length;
byte[] bytes = new byte[numberChars/2];
for (int i = 0; i < numberChars; i += 2)
bytes[i/2] = Convert.ToByte(hex.Substring(i, 2), 16);
return bytes;
}
public static string ByteArrayToString(byte[] ba)
{
string hex = BitConverter.ToString(ba);
return hex.Replace("-", "");
}
}