阻止DESCryptoServiceProvider生成特殊字符
本文关键字:特殊字符 DESCryptoServiceProvider 阻止 | 更新日期: 2023-09-27 18:22:09
我使用以下加密方法加密字符串
private static byte[] mKey = { };
private static byte[] mIV = { 89, 23, 13, 17, 69, 32, 02, 79 };
private static string mStringKey = "lkj@788*";
private static string Encrypt(string pText)
{
try
{
mKey = Encoding.UTF8.GetBytes(mStringKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] byteArray = Encoding.UTF8.GetBytes(pText);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,
des.CreateEncryptor(mKey, mIV), CryptoStreamMode.Write);
cryptoStream.Write(byteArray, 0, byteArray.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(memoryStream.ToArray());
}
catch (Exception ex)
{
return string.Empty;
}
}
我想为客户构建一个折扣码,格式为"CustomerId PurchasedItem DiscountValue",并分别加密这些(CustomerId、PurchasedItems、DiscountValue)字符串,并将加密值组合起来,在它们之间添加"-"字符来构建折扣码,但我担心在加密时,如果它得到"-"字符,那么我的逻辑就会失败。。这种方法安全吗?或者有人能给我另一个建议吗?或者有什么技巧可以使字符串的加密达到固定长度?
我相信.NET的base64编码永远不会包含'-'字符,所以你应该没事。