最近碰到这样一个算法,过程并不复杂,但是思考了很久也没有找到对应的逆运算算法,这里发布出来,希望有高人能够提供思路,
如果有具体的代码实现就最好了。
实现public static String ReCalc(byte[] buffer1)方法,保证
if(text==text1) Console.WriteLine("ok");
就可以了
如果有具体的代码实现就最好了。
实现public static String ReCalc(byte[] buffer1)方法,保证
if(text==text1) Console.WriteLine("ok");
就可以了
1
String text="5UYTSHZ0PL4Q3RB26FD";
2
byte[] mydata=new byte[12];
3
calc_1(text,mydata);
4
String text1=ReCalc(data);
5
if(text==text1) Console.WriteLine("ok");
6
7
//实现下面方法,满足上面条件
8
public static String ReCalc(byte[] buffer1){
9
return "";
10
}
11
12
public static void Calc(string text1, byte[] buffer1)
13
{
14
ushort num1 = 11;
15
uint num2 = 0;
16
uint num3 = 0;
17
int num4 = 0;
18
while ((num2 < buffer1.Length) && (num3 < 90))
19
{
20
uint num5 = CalcNum(text1[num4++]);
21
if (num5 == 0xffff)
22
{
23
throw new Exception("Error");
24
}
25
num5 = num5 << (num1 & 0x1f);
26
buffer1[num2] = Convert.ToByte(buffer1[num2] | ((num5 & 0xff00) >> 8));
27
buffer1[num2 + 1] = Convert.ToByte(buffer1[num2 + 1] | (num5 & 0xff));
28
if (num1 < 8)
29
{
30
num1 += 3;
31
num2++;
32
}
33
else
34
{
35
num1 -= 5;
36
}
37
num3 += 5;
38
}
39
}
40
41
public static uint CalcNum(char c){
42
String data="6HC3QBW9K2FUL8XJ4P0TN5DEAZ1YR7VG";
43
for(int i=0;i<data.Length;i++){
44
if(data[i]==c) return (uint)i;
45
}
46
return 0xffff;
47
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架