欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

快速搞懂Android口令加密(一)

程序员文章站 2024-02-29 10:38:22
废话不多说了,直接给大家贴代码了。 import java.util.random; import javax.crypto.cipher; import j...

废话不多说了,直接给大家贴代码了。

import java.util.random;
import javax.crypto.cipher;
import javax.crypto.secretkey;
import javax.crypto.secretkeyfactory;
import javax.crypto.spec.pbekeyspec;
import javax.crypto.spec.pbeparameterspec;
public class token {
/*
* 基于口令加密创建步骤
* 1、读取口令
* 将需加密字符串转化为字符数组
* 将口令保存至pbekeyspec对象中
* 2、由口令生成秘钥
* 通过secretkeyfactory工厂类的getinstance静态方法获取secretkeyfactory对象;
* getinstance方法需要一个参数--指定口令加密算法{
* 1、pbewithmd5anddes
* 2、pbewithhmacsha1anddesede}
* 通过secretkeyfactory工厂类的generatesecret()方法生成秘钥
* 3、生成随机数(盐)
* 盐必须是8个元素的字节数组
* 通过random类的nextbyte方法生成随机数并将随机数赋值给byte数组,参数为byte数组
* 4、创建并初始化密码器
* 通过getinstance方法获取密码器对象,参数为基于口令的加密算法
* 通过pbeparameterspec类构造器向cipher对象指定基于口令加密的算法(包括提高破解难度的盐)
* 5、获取明文,进行加密
* 执行密码器的dofinal()方法进行加密,加密结果保存在字节数组ctext中
* */
//口令加密操作方法
public byte[] cmdencryptionoperation(string encryptionstr,string pwdstr) throws exception
{
//读取口令
//将口令转化为字符数组
char[] pwd = pwdstr.tochararray();
//将加密数组存储至pbekeyspec对象
pbekeyspec pbekeyspec = new pbekeyspec(pwd);
//由口令生成秘钥
//通过secretkeyfactory的getinstance方法创建secretkeyfactory对象,构造参数为加密类型
secretkeyfactory secretkeyfactory = secretkeyfactory
.getinstance("pbewithmd5anddes");//抛出没找到关键字异常
//通过generatesecret生成口令
secretkey key = secretkeyfactory.generatesecret(pbekeyspec);
//生成随机数(盐)
// 创建是8个元素的字节数组的盐
byte[] salt = new byte[8];
//通过random类的nextbyte方法生成随机数并将随机数赋值给byte数组,参数为byte数组
random random = new random();
random.nextbytes(salt);
//创建并初始化密码器
cipher cipher = cipher.getinstance("pbewithmd5anddes");
pbeparameterspec parameterspec = new pbeparameterspec(salt, 1000);
cipher.init(cipher.encrypt_mode, key,parameterspec);
//获取明文,进行加密
byte[] ptext = encryptionstr.getbytes("utf-8");
byte[] ctext = cipher.dofinal(ptext);//cipher的dofinal方法进行加密
return ctext;
}
}

使用加密方法:

public static void main(string[] args) throws exception {
token token = new token();
byte[] ctext = token.cmdencryptionoperation("加qq群 499092562交流!!","2016/4/5");
fileoutputstream os = new fileoutputstream("pbeenc.dat");
os.write(ctext);
for (int i = 0; i < ctext.length; i++) {
system.out.print(ctext[i]);
}
}

以上内容是针对android口令加密的相关介绍,希望对大家有所帮助!