「aesjava源码」aes算法java

博主:adminadmin 2023-01-16 15:39:08 423

本篇文章给大家谈谈aesjava源码,以及aes算法java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java实现aes加密或者解密,不用工具包的怎么做

import java.security.InvalidKeyException;

import java.security.Key;

import java.security.NoSuchAlgorithmException;

import javax.crypto.*;  

import javax.crypto.spec.*;  

/**

 * 

 * @author wchun

 * 

 * AES128 算法,加密模式为ECB,填充模式为 pkcs7(实际就是pkcs5)

 * 

 *

 */

public class AES {

static final String algorithmStr="AES/ECB/PKCS5Padding";

static private KeyGenerator keyGen;

static private Cipher cipher;

static boolean isInited=false;

//初始化

static private void init()

{

//初始化keyGen

try {

keyGen=KeyGenerator.getInstance("AES");

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

keyGen.init(128);

//初始化cipher

try {

cipher=Cipher.getInstance(algorithmStr);

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

isInited=true;

}

public static byte[] GenKey()

{

if(!isInited)//如果没有初始化过,则初始化

{

init();

}

return keyGen.generateKey().getEncoded();

}

public static byte[] Encrypt(byte[] content,byte[] keyBytes)

{

byte[] encryptedText=null;

if(!isInited)//为初始化

{

init();

}

Key key=new SecretKeySpec(keyBytes,"AES");

try {

cipher.init(Cipher.ENCRYPT_MODE, key);

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

encryptedText=cipher.doFinal(content);

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return encryptedText;

}

//解密为byte[]

public static byte[] DecryptToBytes(byte[] content,byte[] keyBytes)

{

byte[] originBytes=null;

if(!isInited)

{

init();

}

Key key=new SecretKeySpec(keyBytes,"AES");

try {

cipher.init(Cipher.DECRYPT_MODE, key);

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//解密

try {

originBytes=cipher.doFinal(content);

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return originBytes;

}

}

求一款java的AES加密解密的软件源代码(完整)

#include stdio.h

#include stdlib.h

#include fcntl.h

#include unistd.h

#define JIA_SIZE 1024

#define M_S 25

//加密菜单

void menu()

{

puts("(1)加密");

puts("(2)解密");

puts("(3)退出");

}

//加密

void jiami(const char *path/*加密路径*/)

{

int i;

int fp,len;

char buffer[1024];

puts("正在加密... ...");

fp = open(path,O_RDWR); //open以读写方式打开

len=read(fp,buffer,1024);

puts("将要加密的数据");

puts(buffer);

printf("字符一共有: %d\n",len);

puts("准备加密");

for(i=0;ilen;i++)

{

buffer[i] ^= M_S;

}

lseek(fp,0,SEEK_SET);

write(fp,buffer,len);

close(fp); //关闭文件

}

int main(int argc,char *argv[])

{

FILE *fp;

char buffer[JIA_SIZE];

char ch;

if(argc 2){ //如果没有输入路径就错误

puts("请输入正确的参数比如: ./jiami /home/long/bin/123.txt");

return 0;

}

else{//显示加密或者解密路径

printf("你加密或者解密的路径:");

puts(argv[1]);

}

menu(); //显示菜单

switch(ch=getchar())

{

case '1'://加密

jiami(argv[1]);

break;

case '2'://解密

jiami(argv[1]);

break;

case '3'://退出

return 0;

break;

defualt:

puts("请输入正确的菜单参数(1-3)");

}

return 0;

}

关于Java的AES加密问题

使用AES加密时,当密钥大于128时,代码会抛出java.security.InvalidKeyException: Illegal key size or default parameters

Illegal key size or default parameters是指密钥长度是受限制的,java运行时环境读到的是受限的policy文件。文件位于${java_home}/jre/lib/security

这种限制是因为美国对软件出口的控制。

解决办法:

去掉这种限制需要下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files.网址如下。

下载包的readme.txt 有安装说明。就是替换${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar

jdk 5:

通过Java如何实现AES密码算法

1. AES加密字符串

public static byte[] encrypt(String content, String password) {

try {

KeyGenerator kgen = KeyGenerator.getInstance("AES");// 创建AES的Key生产者

kgen.init(128, new SecureRandom(password.getBytes()));// 利用用户密码作为随机数初始化出

// 128位的key生产者

//加密没关系,SecureRandom是生成安全随机数序列,password.getBytes()是种子,只要种子相同,序列就一样,所以解密只要有password就行

SecretKey secretKey = kgen.generateKey();// 根据用户密码,生成一个密钥

byte[] enCodeFormat = secretKey.getEncoded();// 返回基本编码格式的密钥,如果此密钥不支持编码,则返回

// null。

SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");// 转换为AES专用密钥

Cipher cipher = Cipher.getInstance("AES");// 创建密码器

byte[] byteContent = content.getBytes("utf-8");

cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化为加密模式的密码器

byte[] result = cipher.doFinal(byteContent);// 加密

return result;

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

}

return null;

}

2. AES解密

public static byte[] decrypt(byte[] content, String password) {

try {

KeyGenerator kgen = KeyGenerator.getInstance("AES");// 创建AES的Key生产者

kgen.init(128, new SecureRandom(password.getBytes()));

SecretKey secretKey = kgen.generateKey();// 根据用户密码,生成一个密钥

byte[] enCodeFormat = secretKey.getEncoded();// 返回基本编码格式的密钥

SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");// 转换为AES专用密钥

Cipher cipher = Cipher.getInstance("AES");// 创建密码器

cipher.init(Cipher.DECRYPT_MODE, key);// 初始化为解密模式的密码器

byte[] result = cipher.doFinal(content);

return result; // 明文

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

}

return null;

}

关于AES的xts模式的Java实现

这个其实不难 我可以帮你 做好 包通过 老师有问题 包修改

↓↓↓↓↓下面可以找到我

java aes加密 如何用php 进行解密,以下是java代码,求php 代码如何写 (主要是createkey 那个方法)

先看用什么方式的加密,拿AES来说,你需要问java要到混淆值、初始化向量与AES加密的方式如AES-192-CFB.然后直接调用openssl_decrypt方法进行解密.

openssl_decrypt('需要解密的字符串','AES-192-CFB','混淆值',0,'初始化向量'),true)

aesjava源码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于aes算法java、aesjava源码的信息别忘了在本站进行查找喔。