当我尝试使用以下代码将 value1 转换为 byte[] 时:
string value1 = "4rdHFh%2BHYoS8oLdVvbUzEVqB8Lvm7kSPnuwF0AAABYQ%3D";
byte[] value2 = Convert.FromBase64String(value1);
Ι 收到字符串内容无效的base-64字符的错误...
怎么了?
谢谢!
当我尝试使用以下代码将 value1 转换为 byte[] 时:
string value1 = "4rdHFh%2BHYoS8oLdVvbUzEVqB8Lvm7kSPnuwF0AAABYQ%3D";
byte[] value2 = Convert.FromBase64String(value1);
Ι 收到字符串内容无效的base-64字符的错误...
怎么了?
谢谢!
s 由基本 64 位数字、空白字符和尾随填充字符组成。从零开始按升序排列的 64 位基数是大写字符“A”到“Z”、小写字符“a”到“z”、数字“0”到“9”以及符号“+”和“/” .
%
base64
编码中不允许。
查看Base64索引表Wikipedia
Value Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /
%2B 是一个 + 符号 URL 编码 %3D 是一个 = 符号 URL 编码。
您的输入字符串实际上是。
4rdHFh+HYoS8oLdVvbUzEVqB8Lvm7kSPnuwF0AAABYQ=
我有同样的问题,但这些答案都没有帮助我!所以我在这里问我的问题: How to encrypt strings that may have non-base 64 characters and @ luke-park解决了我的问题。(所有学分归他所有)长话短说:
我们必须将我们的inputString
数据转换为字节数组,然后将其转换为 bsae64
. 现在我们的数据是有效base64
格式并且可以加密它:
byte[] data = Encoding.UTF8.GetBytes(inputString);
string b64 = Convert.ToBase64String(data);
我希望这可以帮助其他有同样问题的人。
PS:我的帖子中有两个加密类,非常适合将它们用于加密/解密字符串。
字符串包含无效字符。在这种情况下,%
标志。
如果您转义%2B
为“+”和%3D
“=”,则该字符串将被接受。
我认为问题出在 character%
上。在 base64 字符串中是不允许的
根据MSDN
public static byte[] FromBase64String( string s)
s 由 base-64 数字、空白字符和尾随填充字符组成。base-64位从0升序为大写字母“A”到“Z”,小写字母“a”到“z”,数字“0”到“9”,符号“+”和“/” ”。
这是因为字符串中有 '%' 字符。在 base64 中是不允许的。你从哪里得到这个字符串?