given code
byte[] lDecoded = Base64.getDecoder().decode(pValueBase64Encoded);
Cipher lCipher = Cipher.getInstance("AES/CTR/PKCS5PADDING");
getting exception on getInstance() in JDK17
Exception in thread "main" java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/CTR/PKCS5PADDING
at java.base/javax.crypto.Cipher.getInstance(Cipher.java:571)
Pop3Handler.main(Pop3Handler.java:81)
Caused by: javax.crypto.NoSuchPaddingException: CTR mode must be used with NoPadding
at java.base/com.sun.crypto.provider.CipherCore.setPadding(CipherCore.java:258)
at java.base/com.sun.crypto.provider.AESCipher.engineSetPadding(AESCipher.java:206)
at java.base/javax.crypto.Cipher$Transform.setModePadding(Cipher.java:388)
at java.base/javax.crypto.Cipher.getInstance(Cipher.java:564)
... 4 more
but works well in JDK11
implemented this tests
@Test
public void testProviders() {
Provider[] provs = Security.getProviders();
for (Provider provider : provs) {
Service service = provider.getService("Cipher", "AES");
if (service == null) {
continue;
}
String modes = service.getAttribute("SupportedModes");
if (modes != null && modes.matches("(?i).*CTR.*")) {
System.out.println("CTR found:");
System.out.println(service);
} else {
System.out.println("CTR NOT found:");
}
String paddings = service.getAttribute("SupportedPaddings");
if (paddings != null && paddings.matches("(?i).*PKCS5PADDING.*")) {
System.out.println("PKCS5PADDING found:");
System.out.println(service);
} else {
System.out.println("PKCS5PADDING NOT found:");
}
}
JDK17:
CTR found:
SunJCE: Cipher.AES -> com.sun.crypto.provider.AESCipher$General
aliases: [OID.2.16.840.1.101.3.4.1, 2.16.840.1.101.3.4.1]
attributes: {SupportedKeyFormats=RAW, 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, SupportedPaddings=NOPADDING|PKCS5PADDING|ISO10126PADDING}
PKCS5PADDING found:
SunJCE: Cipher.AES -> com.sun.crypto.provider.AESCipher$General
aliases: [OID.2.16.840.1.101.3.4.1, 2.16.840.1.101.3.4.1]
attributes: {SupportedKeyFormats=RAW, 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, SupportedPaddings=NOPADDING|PKCS5PADDING|ISO10126PADDING}
JDK11
CTR found:
SunJCE: Cipher.AES -> com.sun.crypto.provider.AESCipher$General
aliases: [Rijndael]
attributes: {SupportedKeyFormats=RAW, SupportedModes=ECB|CBC|PCBC|CTR|CTS|CFB|OFB|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64|GCM|CFB72|CFB80|CFB88|CFB96|CFB104|CFB112|CFB120|CFB128|OFB72|OFB80|OFB88|OFB96|OFB104|OFB112|OFB120|OFB128, SupportedPaddings=NOPADDING|PKCS5PADDING|ISO10126PADDING}
PKCS5PADDING found:
SunJCE: Cipher.AES -> com.sun.crypto.provider.AESCipher$General
aliases: [Rijndael]
attributes: {SupportedKeyFormats=RAW, SupportedModes=ECB|CBC|PCBC|CTR|CTS|CFB|OFB|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64|GCM|CFB72|CFB80|CFB88|CFB96|CFB104|CFB112|CFB120|CFB128|OFB72|OFB80|OFB88|OFB96|OFB104|OFB112|OFB120|OFB128, SupportedPaddings=NOPADDING|PKCS5PADDING|ISO10126PADDING}
It looks like everything is around but Algo cannot be used?