Entschlüsselungs Problem. Des pkcs7

heizer_26

Mitglied
ch habe folgendes Problemm. Es gibt einen String der mit DES ECB mit dem Format PKCS#7 verschlüsselt ist. Gibt es in JAVA eine Möglichkeit es ohne "Bouncy Castle" zu entschüsseln?

Viellen Dank für die Antworten.
 

heizer_26

Mitglied
danke Peter,

sehe mir mal an. Meine Problem besteht darin das mit JME laufen soll und da ist problematisch mit BC

und noch mall viellen dank.
 

heizer_26

Mitglied
Peter,
Auf die oben angebeben Seiten, steht nur was für pkcs7 als Sertifikate da. Ich muss dagenen einen String die in einem Programm (C# ) als pcks7 Verschlüsselt wurde entpacken.

Aber trozdem danke.
 

pizza1234

Erfahrenes Mitglied
Hi,
es gibt übrigens für J2ME auch eine BC-Version!

Vielleicht hilft dir der Codeschnipsel weiter:
Java:
	public void crypt(String deinString) throws Exception
	{
	    byte[] input 	= deinString.getBytes();

	    SecretKeySpec key 	= new SecretKeySpec("passwort".getBytes(), "DES");
	    Cipher cipher 		= Cipher.getInstance("DES/ECB/PKCS7Padding");
	    System.out.println("input : " + new String(input));

	    // encryption
	    cipher.init(Cipher.ENCRYPT_MODE, key);
	    byte[] cipherText 	= new byte[cipher.getOutputSize(input.length)];
	    int ctLength 		= cipher.update(input, 0, input.length, cipherText, 0);
	    ctLength += cipher.doFinal(cipherText, ctLength);
	    System.out.println("cipher: " + new String(cipherText) + " bytes: " + ctLength);

	    // decryption
	    cipher.init(Cipher.DECRYPT_MODE, key);
	    byte[] plainText 	= new byte[cipher.getOutputSize(ctLength)];
	    int ptLength 		= cipher.update(cipherText, 0, ctLength, plainText, 0);
	    ptLength += cipher.doFinal(plainText, ptLength);
	    System.out.println("plain : " + new String(plainText) + " bytes: " + ptLength);
		
	}

Grüße
Peter
 

heizer_26

Mitglied
Danke für den Hinweis mit der "BC" es Funktioniert.

Das ist der Code dafür.

Java:
  public String encrypt(String str, String code)
    {

        byte[] ptBytes = str.getBytes();
        BufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CBCBlockCipher(new DESEngine()),
                                                                   new PKCS7Padding());
        CipherParameters cp = new KeyParameter(code.getBytes());
        ParametersWithIV parametersWithIV = new ParametersWithIV(cp, code.getBytes());
        cipher.init(true,parametersWithIV);
        byte[] rv = new byte[cipher.getOutputSize(ptBytes.length)];
        int oLen = cipher.processBytes(ptBytes, 0, ptBytes.length, rv, 0);
        try
        {
            cipher.doFinal(rv, oLen);
        }
        catch (CryptoException ce)
        {
            ce.printStackTrace();
        }

        System.out.println(new String(rv));
        return new String(Base64.encode(rv));
    }

    // entschluesseln
    public String decrypt(String str, String code)
    {
        byte[] cipherText = Base64.decode(str.getBytes());
        PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CBCBlockCipher(new DESEngine()),
                                                                         new PKCS7Padding());
        CipherParameters cp = new KeyParameter(code.getBytes());
        ParametersWithIV parametersWithIV = new ParametersWithIV(cp, code.getBytes());
        cipher.init(false,parametersWithIV);
        byte[] rv = new byte[cipher.getOutputSize(cipherText.length)];
        int oLen = cipher.processBytes(cipherText, 0, cipherText.length, rv, 0);
        try
        {
            cipher.doFinal(rv, oLen);
        }
        catch (CryptoException ce)
        {
            ce.printStackTrace();
        }
        return new String(rv).trim();
    }

es wurde folgende jar verwendet : cldc_classes.zip cldc_crypto.zip
BC : lcrypto-j2me-144
 
Zuletzt bearbeitet:

Neue Beiträge