成都网站建设设计

将想法与焦点和您一起共享

enc解密java代码 encodeuricomponent java解码

JAVA 加密解密的问题.

class EnctryptFile {

成都创新互联公司致力于网站设计制作、成都网站设计,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择成都创新互联公司,就选择了安全、稳定、美观的网站建设服务!

public int [] Encry(int [] buffer )

{

for (int i = 0; i buffer.length; i++) {

int ibt = buffer[i];

ibt += 100;

ibt %= 256; buffer[i] = (byte) ibt; }

return buffer;

}

public int [] unEncry( int [] buffer){

for (int i = 0; i buffer.length; i++) {

int ibt = buffer[i]; ibt -= 100;

ibt += 256;ibt %= 256;

buffer[i] = (byte) ibt; }

return buffer;

}

}

请教个关于Java实现AES加解密的问题

JDK对DESede算法的支持

密钥长度:128位

工作模式:ECB/CBC/PCBC/CTR/CTS/CFB/CFB8 to CFB128/OFB/OBF8 to OFB128

填充方式:Nopadding/PKCS5Padding/ISO10126Padding/

AES加密解密的java实现:

package com.kongxincai.encanddec;import java.security.Key;import java.security.NoSuchAlgorithmException;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;public class AESCoder {   private static final String KEY_ALGORITHM = "AES";   private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默认的加密算法

public static byte[] initSecretKey() {       //返回生成指定算法密钥生成器的 KeyGenerator 对象

KeyGenerator kg = null;       try {

kg = KeyGenerator.getInstance(KEY_ALGORITHM);

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();           return new byte[0];

}       //初始化此密钥生成器,使其具有确定的密钥大小       //AES 要求密钥长度为 128

kg.init(128);       //生成一个密钥

SecretKey  secretKey = kg.generateKey();       return secretKey.getEncoded();

}   private static Key toKey(byte[] key){       //生成密钥

return new SecretKeySpec(key, KEY_ALGORITHM);

}   public static byte[] encrypt(byte[] data,Key key) throws Exception{       return encrypt(data, key,DEFAULT_CIPHER_ALGORITHM);

}   public static byte[] encrypt(byte[] data,byte[] key) throws Exception{       return encrypt(data, key,DEFAULT_CIPHER_ALGORITHM);

}   public static byte[] encrypt(byte[] data,byte[] key,String cipherAlgorithm) throws Exception{       //还原密钥

Key k = toKey(key);       return encrypt(data, k, cipherAlgorithm);

}   public static byte[] encrypt(byte[] data,Key key,String cipherAlgorithm) throws Exception{       //实例化

Cipher cipher = Cipher.getInstance(cipherAlgorithm);       //使用密钥初始化,设置为加密模式       cipher.init(Cipher.ENCRYPT_MODE, key);       //执行操作

return cipher.doFinal(data);

}   public static byte[] decrypt(byte[] data,byte[] key) throws Exception{       return decrypt(data, key,DEFAULT_CIPHER_ALGORITHM);

}   public static byte[] decrypt(byte[] data,Key key) throws Exception{       return decrypt(data, key,DEFAULT_CIPHER_ALGORITHM);

}   public static byte[] decrypt(byte[] data,byte[] key,String cipherAlgorithm) throws Exception{       //还原密钥

Key k = toKey(key);       return decrypt(data, k, cipherAlgorithm);

}   public static byte[] decrypt(byte[] data,Key key,String cipherAlgorithm) throws Exception{       //实例化

Cipher cipher = Cipher.getInstance(cipherAlgorithm);       //使用密钥初始化,设置为解密模式       cipher.init(Cipher.DECRYPT_MODE, key);       //执行操作

return cipher.doFinal(data);

}   private static String  showByteArray(byte[] data){       if(null == data){           return null;

}

StringBuilder sb = new StringBuilder("{");       for(byte b:data){

sb.append(b).append(",");

}

sb.deleteCharAt(sb.length()-1);

sb.append("}");       return sb.toString();

}   public static void main(String[] args) throws Exception {       byte[] key = initSecretKey();

System.out.println("key:"+showByteArray(key));

Key k = toKey(key); //生成秘钥

String data ="AES数据";

System.out.println("加密前数据: string:"+data);

System.out.println("加密前数据: byte[]:"+showByteArray(data.getBytes()));

System.out.println();       byte[] encryptData = encrypt(data.getBytes(), k);//数据加密

System.out.println("加密后数据: byte[]:"+showByteArray(encryptData));//       System.out.println("加密后数据: hexStr:"+Hex.encodeHexStr(encryptData));       System.out.println();       byte[] decryptData = decrypt(encryptData, k);//数据解密

System.out.println("解密后数据: byte[]:"+showByteArray(decryptData));

System.out.println("解密后数据: string:"+new String(decryptData));

}

}

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编码转化;

*/

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做转码。

}

// 加密

public String encrypt(String sSrc) throws Exception {

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

byte[] raw = sKey.getBytes();

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度

cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);

byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));

return new BASE64Encoder().encode(encrypted);// 此处使用BASE64做转码。

}

// 解密

public String decrypt(String sSrc) throws Exception {

try {

byte[] raw = sKey.getBytes("ASCII");

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());

cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);

byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);// 先用base64解密

byte[] original = cipher.doFinal(encrypted1);

String originalString = new String(original, "utf-8");

return originalString;

} catch (Exception ex) {

return null;

}

}

public String decrypt(String sSrc,String key,String ivs) throws Exception {

try {

byte[] raw = key.getBytes("ASCII");

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

IvParameterSpec iv = new IvParameterSpec(ivs.getBytes());

cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);

byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);// 先用base64解密

byte[] original = cipher.doFinal(encrypted1);

String originalString = new String(original, "utf-8");

return originalString;

} catch (Exception ex) {

return null;

}

}

public static String encodeBytes(byte[] bytes) {

StringBuffer strBuf = new StringBuffer();

for (int i = 0; i bytes.length; i++) {

strBuf.append((char) (((bytes[i] 4) 0xF) + ((int) 'a')));

strBuf.append((char) (((bytes[i]) 0xF) + ((int) 'a')));

}

return strBuf.toString();

}


新闻名称:enc解密java代码 encodeuricomponent java解码
当前链接:http://chengdu.cdxwcx.cn/article/doeecic.html