Jasypt CLI 错误:操作不可行(输入或参数错误)

9
我遇到了与Command line Jasypt client encryption 'Operation not possible'相同的问题,但是该帖子针对的是一个更旧版本的Java。
我已检查java_home下列出的java路径,并查看了具有必要.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);
}
编辑: 这似乎与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);
}
1个回答

13

我遇到了同样的问题,你参考的帖子中的第二个答案(Command line Jasypt client encryption 'Operation not possible')解决了我的问题。

我面临这个问题是因为Jasypt CLI使用说明缺少一些信息。

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

请参阅: https://github.com/jasypt/jasypt/issues/8


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接