教学服务系统

 找回密码
 立即注册
搜索
查看: 629|回复: 0

信息计算2019级1班18号冯雨

[复制链接]

11

主题

17

帖子

83

积分

注册会员

Rank: 2

积分
83
发表于 2022-4-5 21:49:45 | 显示全部楼层 |阅读模式
  1. import javax.crypto.Cipher;
  2. import javax.crypto.spec.IvParameterSpec;

  3. import javax.crypto.spec.SecretKeySpec;

  4. import java.util.Base64.Encoder;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileOutputStream;
  8. import java.io.InputStream;
  9. import java.io.OutputStream;
  10. import java.net.URLDecoder;
  11. import java.util.Base64;
  12. import java.util.Base64.Decoder;


  13. /**AES 是一种可逆加密算法,对用户的敏感信息加密处理

  14. * 对原始数据进行AES加密后,在进行Base64编码转化;

  15. */

  16. public class mima {

  17. private static final int PKCS5Padding = 0;
  18. private static int data=0;

  19. /*

  20. * 加密用的Key 可以用26个字母和数字组成

  21. * 此处使用AES-128-CBC加密模式,key需要为16位。

  22. */

  23. private String sKey="0123456789abcdef";

  24. private String ivParameter="0123456789abcdef";

  25. private static mima instance=null;

  26. private mima(){

  27. }

  28. public static mima getInstance(){

  29. if (instance==null)

  30. instance= new mima();

  31. return instance;

  32. }

  33. // 加密

  34. public String encrypt(String sSrc) throws Exception {

  35. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

  36. byte[] raw = sKey.getBytes();

  37. SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

  38. IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度

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

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

  42. Encoder encoder=Base64.getEncoder();
  43. return  encoder.encodeToString(encrypted);//此处使用Base64做转码。

  44. }

  45. // 解密

  46. public String decrypt(String sSrc) throws Exception {

  47. try {

  48. byte[] raw = sKey.getBytes("ASCII");

  49. SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

  50. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

  51. IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());

  52. cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
  53. Decoder decoder=Base64.getDecoder();

  54. byte[] encrypted1 = decoder.decode(sSrc);//先用base64解密

  55. byte[] original = cipher.doFinal(encrypted1);

  56. String originalString = new String(original,"utf-8");

  57. return originalString;

  58. } catch (Exception ex) {

  59. return null;

  60. }

  61. }

  62. public static void main(String[] args) throws Exception {


  63. String cSrc = "我是学生";
  64. // 加密


  65. String enString = mima.getInstance().encrypt(cSrc);
  66. System.out.println("加密后的字串是:" + enString);

  67. String DeString = mima.getInstance().decrypt(enString);


  68. System.out.println("解密后的字串是:" + DeString);

  69. }

  70. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

教学服务系统

GMT+8, 2025-5-6 10:44 , Processed in 0.018577 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表