前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分析midea0978的《一个C#算法分析求解》(一)

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

作者头像
大石头
发布2018-01-15 10:33:55
4320
发布2018-01-15 10:33:55
举报
文章被收录于专栏:智能大石头智能大石头

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

代码语言:javascript
复制
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多小时…… 后面我慢慢把分析过程发上来。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2007-12-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档