java aes输出长度_关于Java下的AES加密明文长度的问题
[Java] 纯文本查看 复制代码package com.example.AESTest;
import java.security.SecureRandom;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class MyClass {
private static final String ALGORITHM = "AES";
/**
* 生成一个密钥
* @param password用于当做密钥生成种子
* [url=home.php?mod=space&uid=155549]@Return[/url] secretKey生成的密钥
* @throws Exception
*/
private static SecretKey geneKey(String password) throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
SecureRandom random = new SecureRandom();
random.setSeed(password.getBytes());
keyGenerator.init(256);
keyGenerator.init(random);
SecretKey secretKey = keyGenerator.generateKey();
return secretKey;
}
/**
* 加密
* @param password秘钥
* @param data明文
* @return result密文
* @throws Exception
*/
public static byte[] testEncrypt(byte[] data,String password) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM);
SecretKey secretKey = geneKey(password);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
cipher.update(data);
byte[] result = cipher.doFinal();
return result;
}
/**
* 解密
* @param password秘钥
* @param data密文
* @return result明文
* @throws Exception
*/
public static byte[] testDecrpyt(byte[] data,String password) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM);
SecretKey secretKey = geneKey(password);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] encodedBytes = data;
byte[] result = cipher.doFinal(encodedBytes);
return result;
}
public static void main(String[] args) throws Exception {
byte[] input= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
System.out.println("Source Data: "+Arrays.toString(input));
String password="123456";
byte[] temp;
temp=testEncrypt(input,password);
System.out.println("Encrypt Data: "+Arrays.toString(temp));
byte[] output=testDecrpyt(temp,password);
System.out.println("Decrypt Data: "+Arrays.toString(output));
}
}
java aes输出长度_关于Java下的AES加密明文长度的问题相关推荐
- 用java的输出姓名_用java程序输出自己的姓名
代码部分: public class Hello { public static void main(String[] args) { System.out.println("$$$$$$$ ...
- java程序输出电话号码_【Java】生成随机的手机号码并输出到文件
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.R ...
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- java string最大长度_一个Java字符串中到底有多少个字符?
作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...
- java获取长度_获取java长度
Java获取本机MAC地址 为什么写这个呢?因为前几天看见网上有采用windows命令获取局域网和广域网MAC,查了查可以直接用JDK的方法. MAC可用于局域网验证,提高安全性. import ja ...
- java 字符串输出字符_输出java字符串
1-1 字符串排序 用Java编写一个能对一组字符串按字典序升序排序的程序 输入为N和N行字符串,需要按行输出字符串升序排序的结果 如输入 3 Abc Abe Abd 输出: Abc Abd Abe ...
- java 多版本管理工具_简介linux下的多版本管理工具—alternatives
alternatives是Unix下重要的版本管理工具,它最早是在debain的系统中出现,因为它强大实用性使得它在各个Unix环境中大量的移植使用,而我们在平时的时候可能最经常使用的是java的op ...
- java输出生日_运用Java语言输出你的出生日期(小新)
前几天,老师刚刚讲完怎样用Java语言输出正确的生日,并且留了一个课后作业. 很喜欢我们老师的讲课方式,她是先让同学自己写,然后再讲.这样可以让我们有思 考的过程. 下面就是我的课后作业,有同学帮助哟 ...
- java 获取文件名长度_利用Java文件类File的方法,获取磁盘文件的文件名、长度、大小等特性...
利用Java文件类File的方法,获取磁盘文件的文件名.长度.大小等特性. 如题,大神们谁可以编写一个这样的java程序? happy530755 | 浏览 1482 次 |举报 我 ...
- java privatekey输出字符串_[Java教程]根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象_星空网...
根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象 2012-05-29 0 1.字符串生成公钥对象 PublicKey /** * 实例化公钥 * * @re ...
最新文章
- Leetcode: Sort List
- msql 数据去重,仅保留一条
- python去除扩展名
- Shell脚本——初识
- 数学在机器学习中的作用
- 【PAT乙级】1007 素数对猜想 (20 分)
- 【机器学习基础】数学推导+纯Python实现机器学习算法3:k近邻
- 将Java EE与jOOQ结合使用的初学者指南
- 【渝粤教育】国家开放大学2019年春季 2633轨道交通信号与通信系统 参考试题
- 机器学习 - pycharm, pyspark, spark集成篇
- 微信公众号开发及h5分享兼容性问题总结
- 03_Linux ARM架构-安装elasticsearch 7.16-银河麒麟V10操作系统
- OD使用经验【转载】
- 揭秘!谷歌云确立领先地位的五大变革
- C#在word中插入表格(包含从excel中选取表格插入到word中)
- 年龄识别之AgeNet
- was英文读音_英语单词was怎么读
- Ubuntu 18.04缺少libstdc++.so.6共享库解决方案
- Python编程PTA题解——换硬币
- 将Unity虚拟相机视角画面显示在一个平面上
热门文章
- [翻译]Real-Time Correlative Scan Matching
- 文/有品生活(pinpinlife) 小户型家具如何摆?
- Interpreting Attributions and Interactions of Adversarial Attacks论文解读
- Stanford CoreNLP - 自然语言软件
- C++--第18课 - 继承与多态 - 下
- golang net/http访问https
- zabbix3.2监控linux内存
- 软件构建--系统设计
- Linux中sudo的用法和sudoers配置详解
- 代码评审 16.7.1