如果基不为10,则此字符串不能包含减号

  今天项目中突然报这个错误,搜遍全网没有发现同样案例,特此记录一下方便其他人遇到此类问题快速解决

 

 

此问题出现的原因是字段中涉及了AES加密解密的操作,解密字符串中出现了减号“-”,导致错误的产生,以下是代码示例:

英文报错提示:String cannot contain a minus sign if the base is not 10 (方便个别同学搜索)

1 Console.WriteLine(HexStringToByteArray("2024-01-01"));
2 byte[] HexStringToByteArray(string s)
3 {
4     s = s.Replace(" ", "");
5     byte[] buffer = new byte[s.Length / 2];
6     for (int i = 0; i < s.Length; i += 2)
7         buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
8     return buffer;
9 }

因为用的是hex加密解密方式,所以s应该是一个不包含特殊字符的字符串。下面引用 了解常用的加密算法 - 知乎 (zhihu.com)

Hex和Base64常被误解为加密算法,其实是一种编码。在加密算法中,是需要先编码再加密的,Hex和Base64就是加密算法中常用的编码。

Hex编码是一种用16个字符(0-9,a-f)表示任意二进制数据的方法,就是二进制数据用16进制数据表示。

Base64是一种用64个字符(A-Z a-z 0-9 + / =)表示任意二进制数据的方法。很明显Base64可以表示更多的数据,应用广发,图片,大文件等等。

posted @ 2024-05-31 18:00  杜i教授  阅读(29)  评论(0编辑  收藏  举报