Any*_*are 13 .net c# asp.net encryption
问:我面临以下大问题:
从时间到另一个我发现以下异常:
Base-64 char数组的长度无效
我使用加密和解密:
public static string Encrypt(string text)
{
try
{
key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] byteArray = Encoding.UTF8.GetBytes(text);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,des.CreateEncryptor(key, IV), CryptoStreamMode.Write);
cryptoStream.Write(byteArray, 0, byteArray.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(memoryStream.ToArray());
}
catch (Exception ex)
{
string message = ex.Message;
}
return string.Empty;
}
public static string Decrypt(string text)
{
try
{
key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
text = text.Replace(" ", "+")
Byte[] byteArray = Convert.FromBase64String(text);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,
des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
cryptoStream.Write(byteArray, 0, byteArray.Length);
cryptoStream.FlushFinalBlock();
return Encoding.UTF8.GetString(memoryStream.ToArray());
}
catch (Exception ex)
{
string message = ex.Message;
}
Run Code Online (Sandbox Code Playgroud)
我阅读了很多关于这个问题的文章,一些帖子谈论的解决方案是:
text = text.Replace(" ", "+")
这根本不能解决我的问题
我的字符串是:3DZF/NZpp0yuQ=3D
我需要帮助来解决这个问题.
编辑
编辑:
Decoding the querystring values is done already when it's parsed into the Request.
Run Code Online (Sandbox Code Playgroud)
Ari*_*tos 19
要解决您需要解决的问题,然后解码所有就绪的encode-base64字符串,取决于您使用它的位置.
例如,如果您在url(或查询)上使用它,可能这是您要使用的地方,那么您需要在使用之前对URL进行编码,在获取URL之前对其进行解码.原因是您需要避免将URL用作代码字符的相同字符与加密字符混合使用.
无论如何这里是解决你的问题的代码(我出于同样的原因使用):
public static string encodeSTROnUrl(string thisEncode)
{
if (null == thisEncode)
return string.Empty;
return HttpUtility.UrlEncode(Encrypt(thisEncode));
}
public static string decodeSTROnUrl(string thisDecode)
{
return Decrypt(HttpUtility.UrlDecode(thisDecode));
}
Run Code Online (Sandbox Code Playgroud)
ps我有同样的问题,并尝试替换'+'和其他,但最后这是使它工作的原因.
不要忘记从代码中删除text = text.Replace("","+")和其他加密操作,只需加密和解密即可.
| 归档时间: |
|
| 查看次数: |
48329 次 |
| 最近记录: |