У меня есть 16byte шестигранный ключ «F81AFDEA26D680BF», а также 16byte зашифрованный текст а в шестнадцатеричном как «3508D26A7064CF68». Мне нужно использовать DES для расшифровки вышеприведенного текста. Я получаю сообщение об ошибке «недопустимый символ в строке Base-64». Код Im используетсяПолучение недопустимый символ в 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);
}
Вы передаете шестнадцатеричную (базовую 16) строку методу, который принимает базовую 64 строку. Чего вы ожидали? – Jon
Мне нужно расшифровать конкретный зашифрованный 16hex, используя ключ в 16 hex. предложите мне код для этого. – user2462086