我遇到了与命令行 Jasypt 客户端加密“无法操作”相同的问题,但是该帖子适用于更旧版本的 Java。
我已经检查了为 java 列出的路径(在下面的 java_home 中)并查看 lib\security\policy\unlimited 文件夹和必要的 .jar 文件,但我仍然收到以下错误。
虽然它可能相关,也可能不相关,但我无法让 arg ivGeneratorClassName=RandomIvGenerator 工作,这几乎同样让我发疯。它抛出一个 ClassNotFound 异常,但是当我在 Eclipse 中展开它时,George 类 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)
Run Code Online (Sandbox Code Playgroud)
算法列表(格式化为更易读):
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]
Run Code Online (Sandbox Code Playgroud)
爪哇版:
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)
Run Code Online (Sandbox Code Playgroud)
Java主页:
C:\jsypt\bin>set JAVA_HOME
JAVA_HOME=C:\Program Files (x86)\Java\jre1.8.0_171
Run Code Online (Sandbox Code Playgroud)
快速运行下面的程序会产生: 2147483647 表示启用了无限制。所以我完全迷路了。
try {
int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");
System.out.println(maxKeyLen);
} catch (Exception e) {
System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)
编辑:这似乎与 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);
}
Run Code Online (Sandbox Code Playgroud)
小智 8
我遇到了同样的问题,您引用的帖子中的第二个答案(命令行 Jasypt 客户端加密“无法操作”)修复了它。
由于 Jasypt CLI 使用说明中缺少一些信息,我遇到了这个问题。
生成初始值的默认生成器是 NoIvGenerator。对于某些/大多数算法,以这种方式生成的 IV 无效,因此会显示上面的错误消息。您必须添加附加参数 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator 才能使其工作。
| 归档时间: |
|
| 查看次数: |
2017 次 |
| 最近记录: |