NoSuchAlgorithmException

5 respostas
Baldao

Fala galera!

Estou tendo problemas com uma classe de criptografia. Quando chamo o método encrypt() eu recebo um 'java.security.NoSuchAlgorithmException:Cannot find any provider supporting AES/CBC/PKCS5Padding'

Segue o código do método:

public static String encrypt(String text, String password) throws Exception
	{
		Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

		//setup key
		byte[] keyBytes = new byte[16];
		byte[] b = password.getBytes("UTF-8");
		int len = b.length;
		if (len > keyBytes.length) len = keyBytes.length;
		System.arraycopy(b, 0, keyBytes, 0, len);

		SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");

		//the below may make this less secure, hard code byte array the IV in both java and .net clients
		IvParameterSpec ivSpec = new IvParameterSpec(keyBytes);

		cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
		byte[] results = cipher.doFinal(text.getBytes("UTF-8"));
		BASE64Encoder encoder = new BASE64Encoder();
		return encoder.encode(results);
	}

Imagino que esteja faltando alguma dependência. O que poderia ser?

5 Respostas

T

Acho que só está disponível a partir do Java 1.4.2. Qual é a versão usada do seu Java?

Baldao

Puxa… fui verificar. O projeto na minha máquina está usando java 1.4.2_14 mas no servidor está usando java 1.3.1. Descobrimos o problema… vou verificar.

Muito obrigado!

F

Acho que vc precisa ter a JCE instalada

http://java.sun.com/javase/downloads/index.jsp

http://java.sun.com/javase/technologies/security/

T

Se você estiver usando JDK 1.3 e puder instalar arquivos em jre/lib/ext e modificar o arquivo jre/lib/security/java.security (normalmente em ambiente de produção isso dá um rolo lascado), você pode usar o provedor BouncyCastle, que implementa esses algoritmos.

http://www.bouncycastle.org

Baldao

Blz!!! Vou fazer uns testes com base no que vc me passou e qq coisa eu posto aqui.

Muito obrigado!

Criado 7 de fevereiro de 2008
Ultima resposta 7 de fev. de 2008
Respostas 5
Participantes 3