快速搞懂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口令加密的相关介绍,希望对大家有所帮助!
上一篇: 做题总结——Pawn’s Revenge
下一篇: mysql的左右内连接用法实例