[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加密明文长度的问题相关推荐

  1. 用java的输出姓名_用java程序输出自己的姓名

    代码部分: public class Hello { public static void main(String[] args) { System.out.println("$$$$$$$ ...

  2. java程序输出电话号码_【Java】生成随机的手机号码并输出到文件

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.R ...

  3. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  4. java string最大长度_一个Java字符串中到底有多少个字符?

    作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...

  5. java获取长度_获取java长度

    Java获取本机MAC地址 为什么写这个呢?因为前几天看见网上有采用windows命令获取局域网和广域网MAC,查了查可以直接用JDK的方法. MAC可用于局域网验证,提高安全性. import ja ...

  6. java 字符串输出字符_输出java字符串

    1-1 字符串排序 用Java编写一个能对一组字符串按字典序升序排序的程序 输入为N和N行字符串,需要按行输出字符串升序排序的结果 如输入 3 Abc Abe Abd 输出: Abc Abd Abe ...

  7. java 多版本管理工具_简介linux下的多版本管理工具—alternatives

    alternatives是Unix下重要的版本管理工具,它最早是在debain的系统中出现,因为它强大实用性使得它在各个Unix环境中大量的移植使用,而我们在平时的时候可能最经常使用的是java的op ...

  8. java输出生日_运用Java语言输出你的出生日期(小新)

    前几天,老师刚刚讲完怎样用Java语言输出正确的生日,并且留了一个课后作业. 很喜欢我们老师的讲课方式,她是先让同学自己写,然后再讲.这样可以让我们有思 考的过程. 下面就是我的课后作业,有同学帮助哟 ...

  9. java 获取文件名长度_利用Java文件类File的方法,获取磁盘文件的文件名、长度、大小等特性...

    利用Java文件类File的方法,获取磁盘文件的文件名.长度.大小等特性. 如题,大神们谁可以编写一个这样的java程序?     happy530755 | 浏览 1482 次 |举报 我 ...

  10. java privatekey输出字符串_[Java教程]根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象_星空网...

    根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象 2012-05-29 0 1.字符串生成公钥对象 PublicKey /** * 实例化公钥 * * @re ...

最新文章

  1. Leetcode: Sort List
  2. msql 数据去重,仅保留一条
  3. python去除扩展名
  4. Shell脚本——初识
  5. 数学在机器学习中的作用
  6. 【PAT乙级】1007 素数对猜想 (20 分)
  7. 【机器学习基础】数学推导+纯Python实现机器学习算法3:k近邻
  8. 将Java EE与jOOQ结合使用的初学者指南
  9. 【渝粤教育】国家开放大学2019年春季 2633轨道交通信号与通信系统 参考试题
  10. 机器学习 - pycharm, pyspark, spark集成篇
  11. 微信公众号开发及h5分享兼容性问题总结
  12. 03_Linux ARM架构-安装elasticsearch 7.16-银河麒麟V10操作系统
  13. OD使用经验【转载】
  14. 揭秘!谷歌云确立领先地位的五大变革
  15. C#在word中插入表格(包含从excel中选取表格插入到word中)
  16. 年龄识别之AgeNet
  17. was英文读音_英语单词was怎么读
  18. Ubuntu 18.04缺少libstdc++.so.6共享库解决方案
  19. Python编程PTA题解——换硬币
  20. 将Unity虚拟相机视角画面显示在一个平面上

热门文章

  1. [翻译]Real-Time Correlative Scan Matching
  2. 文/有品生活(pinpinlife) 小户型家具如何摆?
  3. Interpreting Attributions and Interactions of Adversarial Attacks论文解读
  4. Stanford CoreNLP - 自然语言软件
  5. C++--第18课 - 继承与多态 - 下
  6. golang net/http访问https
  7. zabbix3.2监控linux内存
  8. 软件构建--系统设计
  9. Linux中sudo的用法和sudoers配置详解
  10. 代码评审 16.7.1