好的,我接受一个字符串输入,将其转换为char数组,并将其ASCII保存在数组中。
Random r = new Random();
Console.WriteLine("Enter name : ");
char[] name = Console.ReadLine().ToCharArray();
byte[] by = new byte [name.Length];
int[] arr = new int[name.Length];
FileStream fs = new FileStream("F:\\abc.txt", FileMode.Create, FileAccess.Write);
for (int i = 0; i < name.Length; i++)
{
fs.WriteByte((byte)name[i]);
}
for (int i = 0; i <name.Length ; i++)
{
by[i] = ( ((byte )name[i]));
}
//for (int i = 0; i < name.Length; i++)
//{
// arr[i] = (byte by[i] (Convert.ToInt16);
//}
// fs.WriteByte(48); fs.WriteByte(8); fs.WriteByte(60); fs.WriteByte(80);
fs.Flush();
fs.Close();
它保存了ASCII ...我们可以将它转换为int并在值中添加一定数量。 我基本上是为了加密而做它的一小部分。 和 如果我们添加的数字可以随机生成...我们可以在解密文本时使用它吗?
答案 0 :(得分:0)
这可能会对你有所帮助。您实际上不需要转换为语言级别的数字 - 您的信息更容易作为字符串或字节数组进行操作。
以下代码替换现有代码的输出部分,并使用Random
实例r
按位添加随机数。
byte[] randomNumber = new byte[name.Length];
r.NextBytes(randomNumber);
for (int i = 0; i <name.Length ; i++)
{
fs.WriteByte((byte)name[i] ^ randomNumber[i]);
}
假设您打算在某处单独存储randomNumber
,您将使用相同的按位运算符^
进行“解密”,其方式与此处用于“加密”的方式相同。
答案 1 :(得分:0)
使用C#有点棘手,因为(根据MSDN)Char是16位Unicode数值,而不仅仅是ASCII,所以你必须小心使用非ASCII符号并用奇怪的编码解析文件。另一方面,它可以很容易地转换为Unsigned Short Int,Int,Double和其他一些类型。
基本上,简单的类型转换可能会起到作用:
char character;
int ascii_code = (int)character;
//some fency math and encoding with ascii_code goes here...
char encrypted_char = (char)ascii_code;
不确定,如果Visual Studio允许直接使用char
类型变量进行数学运算(C,C ++)。
答案 2 :(得分:0)
正确地做到这一点的方法是:
Console.WriteLine("Enter your name:");
string name = Console.ReadLine();
byte[] ascii = Encoding.ASCII.GetBytes(name);
short[] shorts = bytes.Select(b => (short)b).ToArray();
int[] finalBytes = new int[shorts.length];
int[] randomKey = new int[shorts.length];
int ndx = 0;
Random r = new Random();
foreach (short b in shorts)
{
int rByte = r.Next(1, 5000);
int singleByte = b + rByte;
finalBytes[ndx] = singleByte;
randomKey[ndx] = rByte;
ndx++;
}
// finalBytes now holds your data. Do something with it!
// randomKey holds your hash data. To decode this, you'll
// need to subtract the value in randomKey[n] from finalBytes[n]
正如其他人所说,强烈建议不要在任何生产代码中使用此代码!