【问题标题】:The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters输入不是有效的 Base64 字符串,因为它包含非 base 64 字符、两个以上的填充字符
【发布时间】:2017-03-10 06:51:50
【问题描述】:

您好,我正在尝试使用 TripleDES 算法进行解密。 编码部分如下:

try
{
    System.Security.Cryptography.TripleDESCryptoServiceProvider des = new System.Security.Cryptography.TripleDESCryptoServiceProvider();
    des.IV = new byte[8];
    System.Security.Cryptography.PasswordDeriveBytes pdb = new System.Security.Cryptography.PasswordDeriveBytes(key, new byte[-1 + 1]);
    des.Key = pdb.CryptDeriveKey("RC2", "MD5", 128, new byte[8]);
    byte[] encryptedBytes = Convert.FromBase64String(file);
    System.IO.MemoryStream ms = new System.IO.MemoryStream(file.Length);
    System.Security.Cryptography.CryptoStream decStream = new System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
    decStream.Write(encryptedBytes, 0, encryptedBytes.Length);
    decStream.FlushFinalBlock();
    byte[] plainBytes = new byte[Convert.ToInt32(ms.Length - 1) + 1];
    ms.Position = 0;
    ms.Read(plainBytes, 0, Convert.ToInt32(ms.Length));
    decStream.Close();
    return Encoding.UTF8.GetString(plainBytes);
}
catch (Exception ex)
{
    throw;
}

加密文件示例

PK YjJ.ÿ×®{9 ËR JOURNAL-ISSUE_6_3907-3916.tif¬ºwPS_÷ð›FM#@!$t¤ØšÐA¤ƒ¡šÐ¤÷&&"]DÔ„"ˆˆ¢€ „&* ""K ë÷òý½ÏÜû̽sÿxgÞ5³öúœ½Ï:³Ö:gï={æØÙí à/ îÐŽ€ ÿá_àüÇAwÆþÃÿz€þÃ…þ‡ÿUÑÿb íØ¿;Šþ¯~©ÿbéÿðþeþs¿èN‡,òŸq @î?LØiðÿå«þþ7fþŸØwD(Ú±ª;ƒú;ŒÙaãŽgà œë¼£o~ë;µÞ@Àá¾uhº þÏzÑ ñÿ¶6ÎD›Ðèø„øÀ¸°˜âAÝ};OÖÕ;¨»ÇPO—¨§g¨k¸×à߸8ÿú!€È¨„8WŠÕË›ø/¡ÆÇPœ ÿ¿òmòÒ¼Ðüï$(8>ðßÐwôDL\ÂNLä‹•œó/‡î0&àøÿpÆ¿|ÜÝÕb‡‹wþßE‰——Bt‹IH¦Çãmâè©D;¢s\tHXD0àÿ¸$§$ ük-¢cRãÂŽ…&ÿ?Qì”]ðÿÔô‹ûÿú¤GÿßuþWã'þƒ@àS €aÆw6P––€±ÌéÎAûå¹–.užÚ2ùÖ.óI& ŶA®•Ë«•Ù»vÝñÛ]éâv°n2ò@µã1·Îùo'Ì8Ρî†Ò6u®aî]Áû/:5º‡{Ö{^?ÒìyÜ£ëCRÏÑVj„§'JùÓc·½ #=ïßyÝáuĨ~r5¹Û?úȽßþœì¥ÅPUe$رÔîòEÃAq^ÆWŽhWŒ„Ä{u/$›\Mð6Q8Ü0žèÝr×ïÆTD'É•W'wßD%ûô,|?ñ€“âkª&Sðp>.Õ÷þ±G— ÒüLŽ\µ'"îw1¹çýzJ†¿™ZÅÓÅ´þŽÝ}ûy;#ó¨YëÕï¿3O}°øý÷?½Hq°·XKÄC:HAxÅò°>d¾ŠH_q³¶X?rdŸDñŠ b %n…(Ñ:,9ˆrð ,‰ð“Båã†Jš#å¢Få–¬œPF‹g“†Kµ ”¡Î©¸¨ö_¯ñ¸´ùºæôH»ö“Ò•žÝ#'âƒz#gµžîy*éðrßÓ³o'vðÀà†ƒ†Ì.§“î÷ÞüÄcj0Q"Î>Ûœ¼·/Mb

当我解密文件时出现异常

输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符

如何解决?

【问题讨论】:

  • 你的输入不是base64的,那你为什么要像它一样解码呢?
  • 我需要解密并想要执行一些操作

标签: c# algorithm encryption tripledes


【解决方案1】:

您的文件已压缩。看到开头的PK了吗?它们是原始 PKZip for DOS 的创建者 Phil Katz 的首字母。你看到JOURNAL-ISSUE_6_3907-3916.tif了吗?它是 zip 文件中包含的文件的名称。所以把它保存在某个地方,然后尝试用你最喜欢的打开拉链的程序打开它。

【讨论】:

  • 这不是压缩文件
  • @MalathiMals 存在可读文本 (JOURNAL-ISSUE_6_3907-3916.tif`) 的事实表明它没有完全加密。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
  • 2012-09-22
  • 2020-11-22
  • 2021-07-16
相关资源
最近更新 更多