细谈软件注册功能

2019独角兽企业重金招聘Python工程师标准>>>

     

       实现软件的注册功能方法很多,最需要考虑的就是不能轻易的让使用者破解,在这里,我就谈谈“.NET快速开发整合框架(RDIFramework.NET)”中平台注册功能的实现方法。在RDIFramework.NET中,注册功能主要方法就是对计算机唯一硬件信息进行RSA数字签名达到软件注册和保护的功能,该方法实现简单,安全性相应较高。

       计算机唯一硬件信息(我们知道计算机中的关键部件如CPU,主板等在全球范围内都有一个独一无二的产品序列 ,用户通过注册模块获取这些产品序列 (即传统所说的:机器吗)并将它发送给软件开发商要求进行RSA数据签名,软件开发商获得这些机器码后利用手中的私钥对这些信息进行RSA数字签名,生成的签名信息(即注册码)发回给用户,用户将收到的注册码输入注册模块的注册码框,软件即可利用公钥执行签名验证,如果输入的注册码被证明就是经过开发商数字签名的机器码,则完成注册过程。

       注册功能项目结构图如下所示:

 

图2 注册文件管理器

通过“注册文件管理器”,我们就可以根据用户提供的信息来生成软件的注册文件。

客户端的注册主要就是根据我们提供的注册文件与公钥,来验证注册文件是否为当前客户的有效注册文件,如果有效,注册成功,无效则注册失败!客户端注册功能设计参考如下所示:

 

图4注册成功

服务端注册码生成核心代码:

一、     生成公/私钥文件:

 

二、     生成注册文件:

三、     验证注册文件:

 

 

至此,软件的注册功能就完成了,当然还有其他很多方法,比如:

Android

注册界面代码

如下:注册界面,有四个可填项: 用户名,密码,确认密码,手机 码 我就是想知道,当我填完了四项内容后,点击提交按钮,我所填的内容能保存在应用中,并在再次调到登录界面时能用刚注册的信息成功登录,这是可以实现的吧/span>

code:
2:配置中声明另外一个acitivity

我们先看第一步,这里是触屏处理中的一段代码:

 代码如下
public boolean onTouchEvent(MotionEvent event) {
    float pointx = event.getX();
    float pointy = event.getY();
    if (pointx > bp_x + 14 && pointx
        if (pointy > bp_y + 43 && pointy
        // 帐
        Intent i = new Intent();// 得到一个意图的实例
        i.putExtra(“count”, 1);// 写出数据
        i.putExtra(“himi”, str_zh);
        i.setClass(MainActivity.instance, Register.class);// 设置当前activity以及将要操作的类
        MainActivity.instance.startActivity(i);// 用当前activity来启动另外一个activity
        }
    }
}

显示定义一个intent对象,Intent这个类的机制是协助交互的,详细的说明这里不多讲。

Intent中的putExtra()函数是起到两个activity之间交互交互的作用,这个方法类似 hashtable 或者hashmap中的put,第一个参数是key(索引) ,后一个参数volue(值),根据key我们可以得到对应的volue了。那么后面我也附上接受的处理。

Intent 中的setClass()函数也是传入两个参数,第一个是传入当前实例的activity对象,后面一个参数指需要打开的activity这个类!然后我们就可以利用当前activity对象来启动另外一个activity了。然后我们看下在另外一个activity是如何创建并且怎么接受数据的。

 代码如下

package com.himi;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

/** * @author Himi **/

public class Register extends Activity {
    private Button button_ok;
    private EditText et;
    private TextView tv;
    private LinearLayout ly;
    private Register rs;
    private byte count;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        rs = this;
        ly = new LinearLayout(this);
        button_ok = new Button(this);
        button_ok.setWidth(100);
        button_ok.setText(“确定”);
        button_ok.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            if (count == 1) {
                MySurfaceView.str_zh = et.getText().toString();
            }
            else if (count == 2) {
                MySurfaceView.str_pass = et.getText().toString();
            }
            rs.finish();
        }
    });

    Intent intent = this.getIntent();
    count = (byte) intent.getIntExtra(“count”, 0);
    String temp_str = “”;
    String temp_str2 = “”;
    et = new EditText(this);
    tv = new TextView(this);
    if (count != 3) {
        temp_str = intent.getStringExtra(“himi”);
        if (count == 1) {
            rs.setTitle(“请输入帐 !”);
        }
        else {
            rs.setTitle(“请输入密码!”);
        }
        ly.addView(tv);
        ly.addView(et);
        ly.addView(button_ok);
        if (temp_str != null) {
            et.setText(temp_str);
        }
    }
    else {
        temp_str = intent.getStringExtra(“himi_zh”);
        temp_str2 = intent.getStringExtra(“himi_pass”);
        rs.setTitle(“您输入的信息:”);
        tv.setText(“帐 :” + temp_str + “n” + “密码” + temp_str2);
        ly.addView(tv);
        ly.addView(button_ok);
        if (temp_str != null) {
            et.setText(temp_str);
        }
    }
    setContentView(ly);
 }
}

以上代码可以看出,新建一个activity其实只需要继承Activity以及重写onCreate()方法即可。当然创建的还需要一步很重要的步骤,我会在第二步中会详细说明,这里我们看下是如何接受之前的activity传来数据的。

 代码如下
Intent intent = this.getIntent();
count = (byte) intent.getIntExtra(“count”, 0);

接受也是很简明易懂,创建一个Intent 意图对象,调用来去getIntExtra函数得到之前传来的数据,根据key。当然还有getStringExtra()等等函数都是类似,只是根据你传入的数据不同选择不同函数罢了。同学们应该注意的是getIntExtra中第二个参数是什么意思,其实就是一个对于找不到key相匹配的时候会默认return 0;

那么下面介绍第二步:在配置中声明

当创建一个activity的时候我们必须在AndroidMainFeset.xml中去声明我们创建的这个类是个Activity。

end


文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览215386 人正在系统学习中 相关资源:细谈软件需求分析过程:提取、抽象、升华_需求分析过程-专业指导…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年2月8日
下一篇 2016年2月8日

相关推荐