分析midea0978的《一个C#算法分析求解》(一)

最近碰到这样一个算法,过程并不复杂,但是思考了很久也没有找到对应的逆运算算法,这里发布出来,希望有高人能够提供思路, 如果有具体的代码实现就最好了。 实现public static String ReCalc(byte[] buffer1)方法,保证 if(text==text1) Console.WriteLine("ok"); 就可以了

1String text="5UYTSHZ0PL4Q3RB26FD";
 2byte[] mydata=new byte[12];
 3calc_1(text,mydata);
 4String text1=ReCalc(data);
 5if(text==text1) Console.WriteLine("ok");
 6
 7//实现下面方法,满足上面条件
 8public static String ReCalc(byte[] buffer1){
 9    return "";
10}
11
12public 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
41public 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}

上面是原文,我对midea0978的《.net平台的RSA实现以及与Delphi之间的互操作性》非常感兴趣,看到他求这算法的分析,就试着看了。一看下来,就是20多小时…… 后面我慢慢把分析过程发上来。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C/C++基础

C#中datagirdview表头变换

dataGridView1.CurrentRow.Selected = false;

1503
来自专栏工科狗和生物喵

【我的漫漫跨考路】数据结构之线性表

正文之前 ? 昨天晚上阶段性的完成了一部分数学的复习(一元积分学终于搞定了,后面的貌似没这么难了),所以今天打算撸一撸代码,结合前几天写的链表实现线性存储,今天...

3816
来自专栏高爽的专栏

Guava Predicate

1. 简介 Predicate<泛型>(断言,断定),是Guava中的一个基础接口,其内部只有一个方法boolean apply(T input),这个方法输入...

1990
来自专栏互联网技术栈

设计模式之设计原则

“开-闭 ” 原则讲的是:一个软件实体应当对扩展开放, 对修改关闭。 这一原则最早由 Bertrand Meyer [MEYER88]提出, 英文原文是:Sof...

1335
来自专栏Create Sun

设计模式--------工厂模式

前言   两个月前写过一次设计模式系列,但很不满意就删除了。显然希望能做到学以致用,而非看书总结,设计模式绝对是你解决问题的一个思路,但在这有点自己的小建议,设...

3508
来自专栏一个会写诗的程序员的博客

Kotlin 语言极简介绍《Kotlin极简教程》正式上架:

当然,事物都是具备两面性的。Kotlin也有缺点。 虽然,官方说100%与 Java 互操作,但是在 Java 调用 Kotlin 的时候还是存在一些不方便的...

853
来自专栏Jackson0714

算法也是很过瘾的~~用面向对象实现~夜过吊桥~算法

32311
来自专栏desperate633

LeetCode 213. House Robber II题目分析代码方法二

在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的。每个房子都存放着特定金额...

742
来自专栏ACM算法日常

唯快不破的01序列——位运算初识

众所周知,计算机的运算使用的就是二进制,它会把十进制的数转化为二进制,然后进行二进制运算,最后再转回十进制展现给我们。而位运算指的是:由于数字在计算机里...

1403
来自专栏owent

POJ PKU 3277 City Horizon 解题报告

题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=3277

843

扫码关注云+社区

领取腾讯云代金券