Android注册程序编写(二)
(作者:Baron_wu 禁止转载)
大家关注一下,顺便点个赞呗
首先安装插件:butterknife
打开file下的setting并选择plugins(在browse):
在browserepository中搜索butterknife并安装。
在build.gradle里添加相应的依赖:
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
之后开始编写主函数,右击activity…并选择Generate:
之后选择这一项
选择绑定的布局:
之后在主函数中添加按钮响应事件:
再导入所需要的其他方法:
之后在如下图目录中的string文件中加入所用到的flag:
之后即可编译运行。
所用到的代码:
private boolean checkRegisterCode(String userName, String rs)
{
try{
if(userName==null||userName.length()==0||rs==null||rs.length()!=16)
return false;
MessageDigest digest=MessageDigest.getInstance("MD5"); //创建报文摘要实例,实现指定的摘要算法
digest.reset(); //重置摘要
digest.update(userName.getBytes()); //将String类型的字符串转化为byte类型并存入一个byte数组中
byte[] bytes=digest.digest(); //对用户名进行哈希
String hexstr = toHexString(bytes,""); //将散列值转换成十六进制的字符串
StringBuilder sb=new StringBuilder(); //取字符串前半部分所有奇数位与后半部分所有偶数位重新组合生成注册码
for(int i=0;i<hexstr.length()/2;i+=2)
{
sb.append(hexstr.charAt(i));
}
for(int i=(hexstr.length()/2+1);i<hexstr.length();i+=2)
{
sb.append(hexstr.charAt(i));
}
String userRegisterCode=sb.toString();
if(!userRegisterCode.equalsIgnoreCase(rs))
return false;
}catch(NoSuchAlgorithmException e){
e.printStackTrace();
return false;
}
return true;
}
~~ ~~
private String toHexString(byte[] bytes, String string) {
StringBuilder hexString=new StringBuilder();
//对字符数组遍历
for(byte b:bytes)
{
/*将字节转换为16进制的字符串,不可直接对字节进行转换,字节8位,
int 32位,采用补码,直接转换出错*/
String hex=Integer.toHexString(0xFF&b);
if(hex.length()==1)
{
hexString.append('0');
}
hexString.append(hex).append(string);
}
return hexString.toString();
}
~~ ~~
//为注册按钮设置点击事件
btnRegister.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(!checkRegisterCode(etUserName.getText().toString().trim(), etRegiserCode.getText().toString().trim()))
{
Toast.makeText(MainActivity.this, R.string.fail, Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(MainActivity.this, R.string.succeed, Toast.LENGTH_SHORT).show();
btnRegister.setEnabled(false);
setTitle(R.string.registered);
}
}
});
}
~~ ~~
<resources>
<string name="app_name">AppCracking</string>
<string name="fail">注册失败</string>
<string name="succeed">注册成功</string>
<string name="registered">已注册</string>
</resources>