安卓java代码加密 java密码加密方法

JAVA程序加密,怎么做才安全程序加密安卓java代码加密?你说的是代码加密还是数据加密 。我都说一下吧 。
Java代码加密:
这点因为Java是开源的安卓java代码加密,想达到完全加密 , 基本是不可能的,因为在反编译的时候 , 虽然反编译回来的时候可能不是您原来的代码,但是意思是接近的 , 所以是不行的 。
那么怎么增加反编译的难度(阅读难度),那么可以采用多层继承(实现)方式来解决,这样即使反编译出来的代码,可读性太差 , 复用性太差了 。
Java数据加密:
我们一般用校验性加密 , 常用的是MD5,优点是速度快,数据占用空间小 。缺点是不可逆,所以我们一般用来校验数据有没有被改动等 。
需要可逆 , 可以选用base64,Unicode , 缺点是没有密钥,安全性不高 。
而我们需要可逆而且采用安全的方式是:对称加密和非堆成加密,我们常用的有AES、DES等单密钥和双密钥的方式 。而且是各种语言通用的 。
全部手动敲字,望采纳,下面是我用Javascript方式做的一系列在线加密/解密工具:
android,java 通用的加密解密方式有几种移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道 。为了让数据交互更安全,我们需要对数据进行加密传输 。今天研究了一下,把几种语言的加密都实践了一遍,实现了.NET,java(android),iOS都同一套的加密算法,下面就分享给大家 。
AES加密有多种算法模式,下面提供两套模式的可用源码 。
加密方式:
先将文本AES加密
返回Base64转码
解密方式:
将数据进行Base64解码
进行AES解密
一、CBC(Cipher Block Chaining,加密块链)模式
是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度.
密钥
密钥偏移量
java/adroid加密AESOperator类:
package com.bci.wx.base.util;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* AES 是一种可逆加密算法 , 对用户的敏感信息加密处理 对原始数据进行AES加密后,在进行Base64编码转化;
【安卓java代码加密 java密码加密方法】 */
public class AESOperator {
/*
* 加密用的Key 可以用26个字母和数字组成 此处使用AES-128-CBC加密模式,key需要为16位 。
*/
private String sKey = "smkldospdosldaaa";//key,可自行修改
private String ivParameter = "0392039203920300";//偏移量,可自行修改
private static AESOperator instance = null;
private AESOperator() {
}
public static AESOperator getInstance() {
if (instance == null)
instance = new AESOperator();
return instance;
}
public static String Encrypt(String encData ,String secretKey,String vector) throws Exception {
if(secretKey == null) {
return null;
}
if(secretKey.length() != 16) {
return null;
}
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] raw = secretKey.getBytes();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
IvParameterSpec iv = new IvParameterSpec(vector.getBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(encData.getBytes("utf-8"));
return new BASE64Encoder().encode(encrypted);// 此处使用BASE64做转码 。

推荐阅读