Android网通账号算号器

作者: 浪漫晨风 | 来源:发表于2017-03-25 15:33 被阅读81次

这几日项目闲了,从网上逛了一下技术论坛,发现网上有许多人用php,asp,c#写了一个中国联通上网账号算号器,用来方便通过一个wifi来使用多台设备上网,但是感觉没有移动端写的,就看着别人的c#代码也写了一个用java语言实现的。试试,还可以用,现在跟大家分享一下,毕竟现在都移动互联网时代了嘛。
关键代码:

public class CncUtils {
    public static String  DeCode(char num[]){
       //联通程序员自己写的一个私有算法
        String ustr = "9012345678abcdeABCDEFGHIJKLMNfghijklmnUVWXYZxyzuvwopqrstOPQRST";
        String yinzi = "25-35-182-236-43-41-53-18-226-215-24-117-35-201-52-17";
        String[] yzarr = yinzi.split("-");
        Collections.reverse(Arrays.asList(yzarr));
        int l = 37, k = 0, u1, x;
        char[] dec_str = new char[num.length];
        for (int i = 0; i < num.length; i++)
        {
            for (int j = 0; j < ustr.length(); j++)
            {
                if (num[i] == (int)ustr.charAt(j))
                {
                    if (i < 16)
                    {
                        u1 = Integer.parseInt(yzarr[i]);
                    } else{
                        x = i % 16;
                        u1 = Integer.parseInt(yzarr[x]);
                    }
                    u1 = ((u1 ^ (l * 3)) ^ k) + j;
                    x = u1 % 62;
                    dec_str[i]=ustr.charAt(x);
                    l = l ^ (x + 9433);
                    break;
                }
            }
            if (dec_str[i]=='\0')
                dec_str[i]=ustr.charAt(i);
                 k = k + 5;
        }
        return "2:" + String.valueOf(dec_str);
    }
}

然后在Activity中调用:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private EditText edUser;
    private EditText edPass;
    private Button btnjisuan;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }
    private void initView(){
        edUser=(EditText)findViewById(R.id.ed_user);
        edPass=(EditText)findViewById(R.id.ed_pass);
        btnjisuan=(Button)findViewById(R.id.btn_jisuan);
        btnjisuan.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_jisuan:
                if(TextUtils.isEmpty(edUser.getText().toString())){
                    Toast.makeText(MainActivity.this, "请输入用户名",
                            Toast.LENGTH_LONG).show();
                    return;
                }
                edPass.setText(CncUtils.DeCode(edUser.getText().toString().toCharArray()));
                break;
        }

    }
}

demo下载

相关文章

网友评论

    本文标题:Android网通账号算号器

    本文链接:https://www.haomeiwen.com/subject/bsscottx.html