qq_28499833 2019-01-11 16:31 采纳率: 100%
浏览 1004
已采纳

已知明文 和密文,求解密算法

卡号(我授权的卡号) 卡号(数据库保存的卡号)
85391 kJ2bkZk=
85392 kJ2bkZo=
85393 kJ2bkZs=
85395 kJ2bkZ0=
85396 kJ2bkZ4=
85398 kJ2bkZA=
85399 kJ2bkZE=
85500 kJ2dmJg=
85501 kJ2dmJk=
85502 kJ2dmJo=
85503 kJ2dmJs=
85505 kJ2dmJ0=
85506 kJ2dmJ4=
85508 kJ2dmJA=
85509 kJ2dmJE=
85525 kJ2dmp0=
85510 kJ2dmZg=
85526 kJ2dmp4=
85511 kJ2dmZk=
85528 kJ2dmpA=
85512 kJ2dmZo=
85529 kJ2dmpE=
85513 kJ2dmZs=
85530 kJ2dm5g=
85515 kJ2dmZ0=
85531 kJ2dm5k=
85516 kJ2dmZ4=
85532 kJ2dm5o=
85533 kJ2dm5s=
85518 kJ2dmZA=
85519 kJ2dmZE=
85535 kJ2dm50=
85520 kJ2dmpg=
85536 kJ2dm54=
85521 kJ2dmpk=
85538 kJ2dm5A=
85522 kJ2dmpo=
85539 kJ2dm5E=
85550 kJ2dnZg=
85523 kJ2dmps=
91063 kZmYnps=
91065 kZmYnp0=
91066 kZmYnp4=
91068 kZmYnpA=
91069 kZmYnpE=
91080 kZmYkJg=
91081 kZmYkJk=
91082 kZmYkJo=
91083 kZmYkJs=
91085 kZmYkJ0=
85551 kJ2dnZk=
85552 kJ2dnZo=
85553 kJ2dnZs=
85555 kJ2dnZ0=
85556 kJ2dnZ4=
85558 kJ2dnZA=
85559 kJ2dnZE=
85560 kJ2dnpg=
这是一个授权会员卡号,我在软件上输入卡号(明文),授权后保存在数据库中(加密),
我用base64解码,如 kJ2bkZk=应该是85391,解码后是:�����(UTF-8)或者是:悵洃?(GBK)

这个能知道是怎么加密的吗?或者把这加密的给读出来。
因为我要从新写软件(c#写),不用之前的软件,但是我要吧数据库中加密的卡号解密出来,不然我从新写软件,之前的会员卡就用不了了(之前的软件商没有联系方式,一些功能没有,才决定自己从新写个软件,数据库继续用他们的数据库)

  • 写回答

4条回答 默认 最新

  • 1进击的小白 2019-01-11 18:15
    关注

    我是找了几个密文进行解码,经过大量测试发现数字和字母的对应关系,我是不是很无聊
    0 h
    1 g
    2 f
    3 e
    5 c
    6 b
    8 p
    9 o
    问我为啥没有4和7是因为给的明文中没有,根据这几个也能找到对应关系了,找到ascII编码
    00110000 01101000
    00110001 01100111
    00110010 01100110
    看完楼上两位说的方法,写完测试下确实没问题,经验多了就是好,一眼就看出来是哪的问题
    我补充下c#写的方法

    //加密方法
    public static string getTransAsc(string password)
            {
                Byte[] byteStr = UTF8Encoding.UTF8.GetBytes(password);
                Byte[] resultArray = new byte[byteStr.Length];
                for (int i = 0; i < byteStr.Length; i++)
                {
                    resultArray[i] = (byte)(byteStr[i] ^ 0xa8);
                }
                return Convert.ToBase64String(resultArray);
            }
    //解密方法
    public static string getDecTransAsc(string password)
            {
                Byte[] byteStr = Convert.FromBase64String(password);
                Byte[] resultArray = new byte[byteStr.Length];
                for (int i = 0; i < byteStr.Length; i++)
                {
                    resultArray[i] = (byte)(byteStr[i] ^ 0xa8);
                }
                return UTF8Encoding.UTF8.GetString(resultArray);
            }
    //调用方法 控制台程序测试的
    static void Main(string[] args)
            {
                                string str2 = Console.ReadLine();
                                string con = getTransAsc(str);
                                Console.WriteLine("加密后的字符串:" + con);
                                string str2 = Console.ReadLine();
                                string con2 = getDecTransAsc(str2);
                                Console.WriteLine("解密后的字符串:" + con2);
                              Console.ReadKey();
                    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料