手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >快速搞懂Android口令加密(一)
快速搞懂Android口令加密(一)
摘要:废话不多说了,直接给大家贴代码了。importjava.util.Random;importjavax.crypto.Cipher;impo...

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

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口令加密的相关介绍,希望对大家有所帮助!

【快速搞懂Android口令加密(一)】相关文章:

Android模拟器中窗口截图存成文件实现思路及代码

基于Android XML解析与保存的实现

Android UI开发专题(二) 之绘图基础

解析Android开发优化之:对Bitmap的内存优化详解

Android开发之线性布局

Android的Service应用程序组件基本编写方法

Android开发之WebView组件的使用解析

Android:操作图片Exif信息

Android 进入设备后台data文件夹的办法

Android开发之表格布局

精品推荐
分类导航