android 密码加密

释放双眼,带上耳机,听听看~!

之前,自己尝试搭建一个服务器,服务器搭好后,自己希望在app上加一个登陆和注册的功能。其实就是app通过POST请求把用户输入的用户名和密码发送给服务器,然后,服务器对数据库进行读取,和用户的数据进行比较,然后返回结果。

其实,登陆功能基本了,可是给组长看的时候,它说密码的传递应该是要加密的,不然别人一抓包,不就知道用户的密码了。所有到网上查了一些资料,最后找到了一些加密的代码。

1.采用异或的代码进行加密

public static String  encodeSimple(String message){
String password=message;//要加密或者解密的字符串
char[]array=password.toCharArray();//获取字符数组
for(int i=0;i<array.length;i++)//遍历字符数组
{
array[i]=(char)(array[i] ^ aaaaaaaaaaaa);//对每个数组元素进行异或运算,异或的值可以自己选择
}
return new String(array);
}

这种加密比较简单,只是把加密的字符串与我们所指定的字符串进行异或运算,便得到加密的数据。解密也十分简单,把加密过的数据与之前指定的字符串再进行一次异或运算就可以了。

 

2.采用android自带的MD5加密

什么是MD5加密?

MD5英文全称“Message-Digest Algorithm 5”,翻译过来是“消息摘要算法5”,由MD2、MD3、MD4演变过来的,是一种单向加密算法,是不可逆的一种的加密方式。

MD5加密有哪些特点?

  • 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  • 容易计算:从原数据计算出MD5值很容易。
  • 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  • 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

这些是我在网上找的关于MD5加密的资料,但是我们必须知道,可以用MD5加密数据,却不可能从MD5获得原数据,所以MD5加密不可逆。

public static String encode(String password) {
// MessageDigest专门用于加密的类
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(password.getBytes("UTF-8"));
byte[] result = messageDigest.digest(); // 得到加密后的字符组数
StringBuffer sb = new StringBuffer();
for (byte b : result) {
int num = b & 0xff; // 这里的是为了将原本是byte型的数向上提升为int型,从而使得原本的负数转为了正数
String hex = Integer.toHexString(num); //这里将int型的数直接转换成16进制表示
//16进制可能是为1的长度,这种情况下,需要在前面补0,
if (hex.length() == 1) {
sb.append(0);
}
sb.append(hex);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}

这就是具体的MD5加密代码,网上很多,不做具体讲解。但是实现从客户端传递密码时,可以生成一个随机数,与密码一起加密,然后把随机数与加密的密码一起发送给服务器,服务器也把客户端传递的随机数与数据库的密码进行MD5加密,对比客户端的加密值,如果相等,就认为密码正确。不过,随机数最好也进行加密,不过不能用MD5加密,因为到服务器后需要解密,所以必须有加密和解密的代码。

这就是密码的加密了。

 

人已赞赏
Android文章

Android开发Tomact和MySql搭建android简单服务器

2020-4-11 17:03:01

Android文章

Android Design库-TabLayout属性详解

2020-4-11 18:18:03

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索