获取 Base-64 字符串中的无效字符
本文关键字:无效 字符 Base-64 字符串 获取 | 更新日期: 2023-09-27 18:36:55
我有一个 16 字节的十六进制密钥"F81AFDEA26D680BF"和一个 16 字节的十六进制加密文本,作为"3508D26A7064CF68"。我需要使用 DES 来解密上面的文本。我收到错误"Base-64 字符串中的字符无效"。我使用的代码是
static byte[] bytes = Encoding.ASCII.GetBytes(KeyHexAscii("F81AFDEA26D680BF"));
public static string Decrypt(string cryptedString)
{
if (String.IsNullOrEmpty(cryptedString))
{
throw new ArgumentNullException("The string which needs to be decrypted can not be null.");
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream memoryStream = new MemoryStream(Convert.FromBase64String(cryptedString));
CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateDecryptor(bytes, bytes), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cryptoStream);
return reader.ReadToEnd();
}
public static string Encrypt(string originalString)
{
if (String.IsNullOrEmpty(originalString))
{
throw new ArgumentNullException("The string which needs to be encrypted can not be null.");
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(bytes, bytes), CryptoStreamMode.Write);
StreamWriter writer = new StreamWriter(cryptoStream);
writer.Write(originalString);
writer.Flush();
cryptoStream.FlushFinalBlock();
writer.Flush();
return Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
}
您的任何数据似乎都不是 Base-64 编码的,因此这不是您想要使用的函数。 看来你已经有一个KeyHexAscii
函数,你会想要使用你编写的任何函数来扭转它。
理想情况下,您将编写加密接口以对字节数组进行操作。 它不应参与编码和解码数据。 您应该处理读取数据并将其转换为其他地方的字节。