相同长度也可以,找到的很多加密   加密后都是很长的一大段..

解决方案 »

  1.   

    我是这样想的,如 
    10个数字,26个字母
    你可以取出所有的数字或是字母的ASCII值,
    取出来了,你现在定义一个数组,

    int _Code[128]={...}
    里面的值就你自己想写什么都可以
    不过最好用十六进制,每个都用两位,按上面取出的ASCII的值,取出对应数组下里的值

    a ASCII 97
    那么就取出数组下标为97的值
    这样取出所有的字符的值就行了,你想倒放放还要顺的放就由你了
    返回来就可以按你做的那样就行了,
    不过那个数组要保存好不能改
      

  2.   

    CPU ID 000006FDBFEBFBFF0000E39D  这么长
    很多软件的注册码都可以做到很短
      

  3.   

    把16进制转换成32进制, 原来的24字符可缩短到20字符:function ToDec(S: String;  iNum: Integer): Integer;
    var
      i : Integer;
      C : Char;
    begin
      Result := 0;
      for i := 1 to Length(S) do
      begin
        Result := Result * iNum;
        C := UpperCase(S[i])[1];
        if (C >= '0') and (C <= '9') then
          Result := Result + ord(C) - ord('0')
        else
          Result := Result + ord(C) - ord('A') + 10;
      end
    end;function DecTo(iDec, iNum, iDig: Integer): String;
    var
      i : Integer;
    begin
      Result := '';
      while iDec > 0 do
      begin
        i := iDec mod iNum;
        if i <= 9 then
          Result := chr(i + ord('0')) + Result
        else
          Result := chr(i - 10 + ord('A')) + Result;
        iDec := iDec div iNum;
      end;
      Result := '0000000000000000' + Result;
      Result := Copy(Result, Length(Result) - iDig + 1, iDig);
    end;function HexToS32(S: String): String;
    var
      sBin: String;
      i   : Integer;
    begin
      sBin := '';
      for i := 1 to Length(S) do
        sBin := sBin + DecTo(ToDec(S[i], 16), 2, 4);
      sBin := sBin + '0000';
      Result := '';
      for i := 0 to Length(sBin) div 5 - 1 do
        Result := Result + DecTo(ToDec(Copy(sBin, i * 5 + 1, 5), 2), 32, 1);
    end;function S32ToHex(S: String): String;
    var
      sBin: String;
      i   : Integer;
    begin
      sBin := '';
      for i := 1 to Length(S) do
        sBin := sBin + DecTo(ToDec(S[i], 32), 2, 5);
      Result := '';
      for i := 0 to Length(sBin) div 4 - 2 do
        Result := Result + DecTo(ToDec(Copy(sBin, i * 4 + 1, 4), 2), 16, 1);
    end;//调用的例子
    procedure TForm1.FormCreate(Sender: TObject);
    var
      s : String;
    begin
      s := HexToS32('000006FDBFEBFBFF0000E39D');     //16进制->32进制
      ShowMessage (s);
      ShowMessage (S32ToHex(s));                     //转换回16进制
      Application.Terminate;
    end;