One*_*ree 1 java encryption cryptography padding ecb
有谁知道这段代码有什么问题?
Cipher cipher = Cipher.getInstance("AES/ECB128/PKCS5Padding", "SunJCE");
Run Code Online (Sandbox Code Playgroud)
这似乎对我来说是正确的,但它在实例化过程中不断抛出"No such algorithm"异常.
除了我的类路径中的库存JDK之外,我运行了这段代码片段并在输出中为AES进行了grepped:
for (Provider provider: Security.getProviders()) {
System.out.println(provider.getName());
for (String key: provider.stringPropertyNames())
System.out.println("\t" + key + "\t" + provider.getProperty(key));
}
Run Code Online (Sandbox Code Playgroud)
我看到这一行:
Cipher.AES SupportedPaddings NOPADDING|PKCS5PADDING|ISO10126PADDING
Run Code Online (Sandbox Code Playgroud)
这告诉我你的填充是支持的.
我也看到了这一行:
Cipher.AES SupportedModes ECB|CBC|PCBC|CTR|CTS|CFB|OFB|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64|CFB72|CFB80|CFB88|CFB96|CFB104|CFB112|CFB120|CFB128|OFB72|OFB80|OFB88|OFB96|OFB104|OFB112|OFB120|OFB128
Run Code Online (Sandbox Code Playgroud)
我注意到ECB出现在这里,但ECB128没有,所以我想知道这是不是问题.我要承认我不知道这些信息是否在正确的轨道上.
编辑添加:我能够用ECB而不是ECB128调用Cipher.getAlgorithm("AES/ECB/PKCS5Padding").在我看来,与ECB一样,您无法指定块大小,至少可以使用此处提供的内容.不确定这是否足够你.