AES 加密 Java 密钥长度无效

2024-01-28

我正在尝试创建 AES 加密方法,但由于某种原因我不断收到

java.security.InvalidKeyException: Key length not 128/192/256 bits

这是代码:

public static SecretKey getSecretKey(char[] password, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException{
    SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
    // NOTE: last argument is the key length, and it is 256
    KeySpec spec = new PBEKeySpec(password, salt, 1024, 256);
    SecretKey tmp = factory.generateSecret(spec);
    SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
    return(secret);
}


public static byte[] encrypt(char[] password, byte[] salt, String text) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, InvalidParameterSpecException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException{
    SecretKey secret = getSecretKey(password, salt);

    Cipher cipher = Cipher.getInstance("AES");

    // NOTE: This is where the Exception is being thrown
    cipher.init(Cipher.ENCRYPT_MODE, secret);
    byte[] ciphertext = cipher.doFinal(text.getBytes("UTF-8"));
    return(ciphertext);
}

谁能看到我做错了什么吗?我认为这可能与 SecretKeyFactory 算法有关,但这是我能找到的唯一一种在我正在开发的终端系统上受支持的算法。任何帮助,将不胜感激。谢谢。


要获得更强的密钥强度加密,您需要下载 Java 加密扩展 (JCE) 无限强度管辖策略文件。

http://java.sun.com/javase/downloads/index.jsp http://java.sun.com/javase/downloads/index.jsp(检查其他下载)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AES 加密 Java 密钥长度无效 的相关文章

随机推荐

  • 在 Rstudio 的查看器中显示 Rd 文件

    我在项目文件夹中有函数和数据集的文档 在文档文件夹中 我有所有数据集的 Rd 文件 我希望用户能够调用自定义帮助函数并在查看器中启动 Rd 文件 就像从文件编辑器编译文件时自动完成的那样 是否有可能做到这一点 我不太明白你为什么要这样做 但
  • MagicalRecord:多个数据库

    我有一个使用 MagicalRecord 的应用程序 并且我正在使用大量用于参考的数据预先填充数据库 在同一数据模型中 我拥有与用户在应用程序中可能执行的操作相关的用户可定义信息 该应用程序被拒绝 因为预填充的数据应该被标记为 不备份 因此
  • 异常情况下自动回滚有什么缺点?

    当您编写 Flask sqlalchemy 应用程序并进行数据库查询 异常处理时 如下所示 def add user user User gt bool was the user added errors try db session ad
  • 塑料单片机。这是正确的解决方案吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我知道已经有一些关于塑料 SCM 的问题 但它们已经存在一年多了 最近有人用过Plastic SCM吗 你怎么看待这件事 我已经使用过 git
  • pandas:如何绘制 pandas 中 IMDB 电影的电影数量与类型的饼图?

    我有以下数据集 import pandas as pd import numpy as np matplotlib inline df pd DataFrame movie A B C D genres Science Fiction Ro
  • 存在同名数据库,或无法打开指定文件,或位于 UNC 共享上

    当我在新电脑上运行我的项目时出现此错误 为了避免这种情况 我每次都必须复制粘贴新的连接字符串 有什么办法可以避免这种情况 我有3个不同的数据库 它非常烦人的O O SqlConnection con new SqlConnection Da
  • 复合键作为外键(sql)

    这是我关心的两个表 CREATE TABLE IF NOT EXISTS tutorial beggingTime time NOT NULL day varchar 8 NOT NULL tutorId int 3 NOT NULL ma
  • gulp:gulp任务回调函数在哪里定义的?

    gulp 中的任务可以这样定义 gulp task foobar function callback 我想了解回调函数是什么 它在哪里定义的 我可以在运行时传入其他函数作为参数吗 它有什么作用 这些文档 https github com g
  • 如何在 WPF 弹出窗口中放置关闭 [x]

    我已经在 c 和 wpf 中使用此代码成功创建了一个弹出窗口
  • 为什么我的 Twitter Bootstrap 表单字段使用流体容器会溢出?

    更新 问题演示在这里 http jsfiddle net fdB5Q embedded result http jsfiddle net fdB5Q embedded result 从大约 767 像素到 998 像素 表单字段比包含井更宽
  • 如何隐藏 TieredCompilation 警告?

    我正在使用 Linux Mint 和 OpenJDK java version显示这个 java version 1 7 0 79 OpenJDK Runtime Environment IcedTea 2 5 6 7u79 2 5 6 0
  • 为什么 bash 按字典顺序而不是数字来评估数字比较?

    有人可以解释一下 if 重击块 我使用下面的简单代码检查是否第一个值小于第二个值 first value 67 second value 2 if first value lt second value then echo Yes else
  • WiX .NET Bootstrapper - 功能选择

    我们正在尝试获取自定义 NET Bootstrapper 以便通过我们的 WiX 安装程序有选择地安装 MSI 包中的功能 注册了 PlanMsiFeature 事件后 我们认为我们将能够访问 MSI 中的功能并根据预设条件排除某些功能 然
  • d3.js 受形状约束的力定向布局

    我想知道是否有一种方法可以使用 d3 js 创建强制导向布局并通过任意形状限制它 这样 所有节点均等分布within形状和 边界和节点之间的距离等于节点之间的距离 我希望已经有这样的解决方案 否则 我的想法是从力导向布局开始 并在每次迭代中
  • 在 Sequelize 中按日期范围查询列字段

    我正在尝试使用 Sequelize 查询数据库以获取在特定日期范围内创建的项目 我用的是 between运营商 但我似乎没有得到任何东西 where createdAt between 2018 03 31T21 00 00 000Z 20
  • Gitcherry-pick 会发生合并冲突

    目前我有两个分支 master beta 001 beta 001 之前有时会从 master 处检出 为了使 beta 001 更新到 master 在 master 中推送的提交也将被挑选到 beta 001 一切都运行良好 直到 be
  • 从一个视图切换到下一个视图

    我有一个带有两个视图和视图控制器的应用程序 如何让用户从一个视图切换到下一个视图 例如在主屏幕或天气应用程序中 我知道界面生成器中有一个页面控件 但它只是用户所在页面的指示器 感谢并抱歉我的英语不好 查看 Apple 的 iPhone 示例
  • wxPython 中带有自动关闭计时器的 wxMessageBox

    平台 Windows OS X Python版本 活动状态Python 2 7 wxPython版本 2 9版 如果您通过子类化创建自己的自定义对话框wx Dialog http www wxpython org docs api wx D
  • 在 React js 中将数组作为 props 传递

    我是新来的反应 我一直在尝试 React 但我陷入了如何使用 props 传递数组的困境 case 1 var c program var Navigation React createClass getInitialState funct
  • AES 加密 Java 密钥长度无效

    我正在尝试创建 AES 加密方法 但由于某种原因我不断收到 java security InvalidKeyException Key length not 128 192 256 bits 这是代码 public static Secre