一.获得用户输入的密钥
我这里的讨论使用的平台C# 。
我原本的目的是为了对一组byte[]进行简单的异或加密,而密钥就是从用户输入而来。那么通过何种控件何种方式获得用户的输入呢?
1.方式一,Textbox
第一种就是直接使用Textbox接收用户输入的string,然后使用Encoding的GetBytes[]方法获得byte[]密钥数组。这种的优点是很直观,缺点是用户并不知道最终的密钥Byte[]的内容是什么;
2.方式二,NumericUpAndDown
对应的第二种方式就是,让用户直接输入byte[],那么可以使用数字控件,并且将属性Hex打开,那么用户的输入就会是16进制,然后我们只要将16进制数转换为byte[]就好了,使用的就是BitConverter.GetBytes函数。这里有个问题:
1).密钥byte[]的数组大小问题
众所周知,BitConverter.GetBytes获得的数组大小与填入的参数是什么类型有关。如果是对int GetBytes(),那么数组大小就是4,因为int就是4字节;如果对short ,当然就是2喽。所以问题来了。当用户比如输入了F时,我们如何得知用户想要的密钥数组大小是多少?
解决办法当然是,直接判断数据的极值,比如F明显是一个字节可以搞定的,那么数组大小就是1,7FFF数组大小就是short可以搞定的,那么(short st = (short)NumericUpAndDown