Jasypt CLI错误无法操作(错误的输入或参数)

问题描述 投票:1回答:1

我遇到了与Command line Jasypt client encryption 'Operation not possible'相同的问题,但是该帖子是针对Java的较旧版本的。

我已经检查了列出的java路径(在下面的java_home中,并看到带有必需的.jar文件的lib \ security \ policy \ unlimited文件夹,但仍然出现以下错误。

虽然可能相关,也可能不相关,但我无法使arg ivGeneratorClassName = RandomIvGenerator正常工作,这几乎使我发疯。它引发了ClassNotFound异常,但是当我在Eclipse中扩展它时,乔治提供了org.jasypt.iv.RandomIvGenerator类。

jasypt输出:

C:\jsypt\bin>encrypt.bat input=SomeVeryLongPassword password=MixItUpALot algorit
hm=PBEWITHHMACSHA256ANDAES_256

----ENVIRONMENT-----------------

Runtime: Oracle Corporation Java HotSpot(TM) Client VM 25.171-b11



----ARGUMENTS-------------------

algorithm: PBEWITHHMACSHA256ANDAES_256
input: SomeVeryLongPassword
password: MixItUpALot



----ERROR-----------------------

Operation not possible (Bad input or parameters)

算法列表(格式略为可读):

    C:\jsypt\bin>listAlgorithms.bat

    DIGEST ALGORITHMS:   [MD2, MD5, SHA, SHA-224, SHA-256, SHA-384, SHA-512]

    PBE ALGORITHMS:      [PBEWITHHMACSHA1ANDAES_128, PBEWITHHMACSHA1ANDAES_256, PBEWITHHMACSHA224ANDAES_128, 
    PBEWITHHMACSHA224ANDAES_256, PBEWITHHMACSHA256ANDAES_128, PBEWITHHMACSHA256ANDAES_256, PBEWITHHMACSHA384ANDAES_128, 
PBEWITHHMACSHA384ANDAES_256, PBEWITHHMACSHA512ANDAES_128, PBEWITHHMACSHA512ANDAES_256, PBEWITHMD5ANDDES,  
PBEWITHMD5ANDTRIPLEDES, PBEWITHSHA1ANDDESEDE, PBEWITHSHA1ANDRC2_128, PBEWITHSHA1ANDRC2_40, PBEWITHSHA1ANDRC4_128,
PBEWITHSHA1ANDRC4_40]

Java版本:

C:\jsypt\bin>java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) Client VM (build 25.171-b11, mixed mode, sharing)

Java主页:

C:\jsypt\bin>set JAVA_HOME
JAVA_HOME=C:\Program Files (x86)\Java\jre1.8.0_171

快速运行下面的程序会产生:2147483647,表示启用了无限制。所以我完全迷路了。

try {
int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");
System.out.println(maxKeyLen);
} catch (Exception e) {
    System.out.println(e);
}

EDIT:这似乎与正在执行的CLI有关。将下面的代码与示例用法结合在一起(更改算法),它可以生成加密的密码。下面是我的替代方法,但是我希望能够通过CLI执行此操作,因为在应该更改密码的情况下,无需每90天编辑/编译/运行一次此操作。

try {
         StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
         encryptor.setPassword("jasypt"); // could be got from web, env variable...
         encryptor.setAlgorithm("PBEWITHHMACSHA256ANDAES_256");
         encryptor.setIvGenerator(new RandomIvGenerator());
         String encrypted = encryptor.encrypt("ThisisaATest");
         System.out.println(encrypted);
} catch (Exception e) {
    System.out.println(e);
}
java jce jasypt
1个回答
0
投票

我有同样的问题,您所引用的帖子(Command line Jasypt client encryption 'Operation not possible')中的第二个答案已解决。

由于在Jasypt CLI使用说明中缺少一些信息,所以我遇到了这个问题。

用于生成初始值的默认生成器是NoIvGenerator。对于某些/大多数算法,以这种方式生成的IV无效,因此将显示上面的错误消息。您必须添加其他参数ivGeneratorClassName = org.jasypt.iv.RandomIvGenerator使其起作用。

参见:https://github.com/jasypt/jasypt/issues/8

© www.soinside.com 2019 - 2024. All rights reserved.