不懂.NET。好像是跟字符串加密有关?谁给个通俗易懂的注释,让外行也能看得懂
public static string sj_jjm_sj(string sj, string mm)
{
byte[] bytes = Encoding.Unicode.GetBytes(sj);
byte[] buffer = Encoding.ASCII.GetBytes(mm);
int num3 = bytes.Length – 1;
for (int i = 0; i <= num3; i++)
{
int num4 = buffer.Length – 1;
for (int j = 0; j <= num4; j++)
{
bytes[i] = (byte) (bytes[i] ^ buffer[j]);
}
}
return Encoding.Unicode.GetString(bytes).Trim();
}
public static string sj_jjm_sj(string sj, string mm)
{
byte[] bytes = Encoding.Unicode.GetBytes(sj);
byte[] buffer = Encoding.ASCII.GetBytes(mm);
int num3 = bytes.Length – 1;
for (int i = 0; i <= num3; i++)
{
int num4 = buffer.Length – 1;
for (int j = 0; j <= num4; j++)
{
bytes[i] = (byte) (bytes[i] ^ buffer[j]);
}
}
return Encoding.Unicode.GetString(bytes).Trim();
}
解决方案
10
// 貌似是 数据_加密_数据 // 数据 sj,密码 mm 嘿嘿 // 估计不可逆 public static string sj_jjm_sj(string sj, string mm) { byte[] bytes = Encoding.Unicode.GetBytes(sj); // 用 unicode 编码获取 sj 的 byte[] byte[] buffer = Encoding.ASCII.GetBytes(mm); // 用 ascii 编码获取 mm 的 byte[] int num3 = bytes.Length - 1; // 这个是写代码的人没搞懂 c 的数组索引,可以不要 for (int i = 0; i <= num3; i++) // 可以写成 for (var i = 0; i < bytes.Length; i++) { int num4 = buffer.Length - 1; // 可以不要 for (int j = 0; j <= num4; j++) // for (var j = 0; j < buffer.Length; j++) { bytes[i] = (byte) (bytes[i] ^ buffer[j]); // 对 bytes[i] 进行异或运算 } } // 返回一个字符串 // 该字符串是利用 unicode 编码的 GetString 方法对新的 bytes 计算而生成的。 return Encoding.Unicode.GetString(bytes).Trim(); }
10
应该分别将两个字符串转换成字节数组,再将两个字节数组中的每一个字节进行异或比较,将结果再转换成字符串,但是要保证两个字符串装还成的字节数组一样长,最好将编码方式也统一。
10
假如是加密的话本人建议的字符串长度相同和编码方式统一可以不看
10
简单的异或加密。mm就是”密码”。
10
这应该是对字符串加密(也可以是转换,但是加密可能性较大)
方法传入字符串1 sj,字符串2 mm(猜测mm是密匙)
把si和转成byte
把sj的每一byte和mm的每一byte相乘,得到一个新的byte赋值到sj的byte数组中
把新的sj的byte转换成新的string传回。
方法传入字符串1 sj,字符串2 mm(猜测mm是密匙)
把si和转成byte
把sj的每一byte和mm的每一byte相乘,得到一个新的byte赋值到sj的byte数组中
把新的sj的byte转换成新的string传回。