「aesjava源码」aes算法java
本篇文章给大家谈谈aesjava源码,以及aes算法java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java实现aes加密或者解密,不用工具包的怎么做
- 2、求一款java的AES加密解密的软件源代码(完整)
- 3、关于Java的AES加密问题
- 4、通过Java如何实现AES密码算法
- 5、关于AES的xts模式的Java实现
- 6、java aes加密 如何用php 进行解密,以下是java代码,求php 代码如何写 (主要是createkey 那个方法)
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源码的信息别忘了在本站进行查找喔。