当前位置: 首页 > 知识库问答 >
问题:

如何确定密码的最大密钥大小

惠诚
2023-03-14
        SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
        KeySpec spec = new PBEKeySpec(keyString.toCharArray(), SALT, 256, 128);
        byte[] encoded = factory.generateSecret(spec).getEncoded(); 
        assert encoded.length*8 == 128;
        Key rv = new SecretKeySpec(encoded, "AES");
        Cipher cipher = Cipher.getInstance(CIPHER_MODE);
        cipher.init(Cipher.DECRYPT_MODE, rv, new IvParameterSpec(IV_PARAMETER_SPEC));

共有1个答案

赖浩荡
2023-03-14

没有直接的方法来做到这一点,而且这可能也不是一个好主意。有些密码可能有很短或很长的密钥,这两种密钥都不是很有用。RSA甚至没有最大密钥大小,最小密钥大小通常是不安全的。

有getMaxAllowedKeyLength方法,但它可能只返回integer.max_value而不是以比特为单位的最大密钥大小。它只应用于检查已知密钥长度的限制。

如果您想使密钥大小可配置,最好将其作为属性/资源存储在某个地方。在我看来,把这个决定抽象出来不是一个好主意。

 类似资料:
  • 我想在Azure密钥金库里储存一些更大的秘密。 所以我想知道在Azure Key Vault中可以作为秘密存储的值的最大大小是多少?

  • 问题内容: 我无法在上创建索引。 MySQL: 问题答案:

  • 问题内容: 当我执行以下命令时: 我收到此错误消息: 有关column1和column2的信息: 我认为只需要21个字节,而只需要501个字节。因此,总字节数是522,少于767。那么为什么收到错误消息? 问题答案: 在MySQL版本5.6(及更早版本)中,InnoDB表的前缀限制为767个字节。MyISAM表的长度为1,000字节。在MySQL 5.7及更高版本中,此限制已增加到3072字节。

  • 问题内容: 我是EC加密的新手,对此有些挣扎。我正在使用Java 8和BouncyCatle提供程序。现在的问题是:当我使用以下代码生成EC-KeyPair时: 并尝试获取公用密钥的字节数组以将其发送给其他人,编码密钥的长度为158个字节,格式为X.509。但是我期望X9.62格式和65到66字节之间的密钥大小。为什么公钥这么大,我如何用期望的密钥大小对其进行编码?(我期望密钥的大小,因为我期望密

  • 我是EC加密的新手,对它有一些困难。我正在使用Java8和BouncyCatle提供程序。我现在的问题是:当我使用以下代码生成EC密钥对时: 并尝试获取公钥的字节数组以将其发送给另一个人,编码密钥长158字节,格式为X.509。但我期望X9.62格式和65到66字节之间的密钥大小。为什么公钥这么大?我如何用预期的密钥大小对其进行编码?(我期望密钥大小,因为我期望密钥长度为521位。)

  • 问题内容: 我知道有关此标题的问题已经回答过,但是请继续阅读。发布前,我已彻底阅读了关于此错误的所有其他问题/答案。 我收到以下查询的上述错误: 有谁知道为什么以及如何解决它?问题是-相同的查询在我的本地计算机上运行完美,在我以前的主机上也运行良好。顺便说一句,它来自一个成熟的项目- phpdevshell-所以我猜这些家伙知道他们在做什么,尽管你永远都不知道。 任何线索表示赞赏。 我正在使用ph