我正在做这个序列号的事情,格式是 xxxxx-xxxxx-xxxxx(15 个字符)。我目前可以加密我的字符串,但问题是:
- 6 个字符变成 20+ 个字符。
- 有一些难以理解的字符,例如:+、/、=
那么将字符串加密为一定数量的字符的最佳方法是什么?就我而言:6 个字符加密为 15 个字符。
我目前正在使用这样的东西:
public string EncryptString(string clearText, string Password)
{
byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(Password, ByteGetter(UsageMode, "Password"));
byte[] encryptedData = EncryptByte(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));
return Convert.ToBase64String(encryptedData);
}
public static byte[] EncryptByte(byte[] clearData, byte[] Key, byte[] IV)
{
MemoryStream ms = new MemoryStream();
Rijndael alg = Rijndael.Create();
alg.Key = Key;
alg.IV = IV;
CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(clearData, 0, clearData.Length);
cs.Close();
byte[] encryptedData = ms.ToArray();
return encryptedData;
}