enc解密java代碼 encodeuricomponent java解碼

JAVA 加密解密的問題.

class EnctryptFile {

成都創(chuàng)新互聯(lián)公司致力于網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計,成都網(wǎng)站設(shè)計,集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇成都創(chuàng)新互聯(lián)公司,就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!

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;

}

}

請教個關(guān)于Java實現(xiàn)AES加解密的問題

JDK對DESede算法的支持

密鑰長度:128位

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

填充方式:Nopadding/PKCS5Padding/ISO10126Padding/

AES加密解密的java實現(xiàn):

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";//默認(rèn)的加密算法

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); ? ? ? //使用密鑰初始化,設(shè)置為加密模式 ? ? ? cipher.init(Cipher.ENCRYPT_MODE, key); ? ? ? //執(zhí)行操作

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); ? ? ? //使用密鑰初始化,設(shè)置為解密模式 ? ? ? cipher.init(Cipher.DECRYPT_MODE, key); ? ? ? //執(zhí)行操作

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數(shù)據(jù)";

System.out.println("加密前數(shù)據(jù): string:"+data);

System.out.println("加密前數(shù)據(jù): byte[]:"+showByteArray(data.getBytes()));

System.out.println(); ? ? ? byte[] encryptData = encrypt(data.getBytes(), k);//數(shù)據(jù)加密

System.out.println("加密后數(shù)據(jù): byte[]:"+showByteArray(encryptData));// ? ? ? System.out.println("加密后數(shù)據(jù): hexStr:"+Hex.encodeHexStr(encryptData)); ? ? ? System.out.println(); ? ? ? byte[] decryptData = decrypt(encryptData, k);//數(shù)據(jù)解密

System.out.println("解密后數(shù)據(jù): byte[]:"+showByteArray(decryptData));

System.out.println("解密后數(shù)據(jù): string:"+new String(decryptData));

}

}

android,java 通用的加密解密方式有幾種

移動端越來越火了,我們在開發(fā)過程中,總會碰到要和移動端打交道的場景,比如.NET和android或者iOS的打交道。為了讓數(shù)據(jù)交互更安全,我們需要對數(shù)據(jù)進(jìn)行加密傳輸。今天研究了一下,把幾種語言的加密都實踐了一遍,實現(xiàn)了.NET,java(android),iOS都同一套的加密算法,下面就分享給大家。

AES加密有多種算法模式,下面提供兩套模式的可用源碼。

加密方式:

先將文本AES加密

返回Base64轉(zhuǎn)碼

解密方式:

將數(shù)據(jù)進(jìn)行Base64解碼

進(jìn)行AES解密

一、CBC(Cipher Block Chaining,加密塊鏈)模式

是一種循環(huán)模式,前一個分組的密文和當(dāng)前分組的明文異或操作后再加密,這樣做的目的是增強(qiáng)破解難度.

密鑰

密鑰偏移量

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 是一種可逆加密算法,對用戶的敏感信息加密處理 對原始數(shù)據(jù)進(jìn)行AES加密后,在進(jìn)行Base64編碼轉(zhuǎn)化;

*/

public class AESOperator {

/*

* 加密用的Key 可以用26個字母和數(shù)字組成 此處使用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,可增加加密算法的強(qiáng)度

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

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

return new BASE64Encoder().encode(encrypted);// 此處使用BASE64做轉(zhuǎn)碼。

}

// 加密

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,可增加加密算法的強(qiáng)度

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

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

return new BASE64Encoder().encode(encrypted);// 此處使用BASE64做轉(zhuǎn)碼。

}

// 解密

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();

}

分享標(biāo)題:enc解密java代碼 encodeuricomponent java解碼
網(wǎng)站地址:http://muchs.cn/article2/doeecic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、面包屑導(dǎo)航自適應(yīng)網(wǎng)站域名注冊、網(wǎng)站制作ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站