Перенос кода шифрования Java-SE на BlackBerry - PullRequest
0 голосов
/ 07 июля 2010

У меня есть следующие процедуры шифрования / дешифрования, и мне нужно перенести их в мой проект BlackBerry. Не могли бы вы, пожалуйста, начать меня?

import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;
import java.util.zip.CRC32;
import java.util.zip.Checksum;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;

 public String EncryptData(String data, String skey) throws Exception {      
    String encryptedData = "";        

    try{
       byte [] bData = data.getBytes();
       String alg = "AES/ECB/NoPadding"; 
       SecretKey key = new SecretKeySpec(skey.getBytes(), alg.replaceFirst("/.*", "")); 
       Cipher cipher = Cipher.getInstance(alg);
       cipher.init(Cipher.ENCRYPT_MODE, key);
       byte[] encoded = cipher.doFinal(bData);          
       encryptedData = bytesToHex(encoded);
    }
    catch(Exception e){
        throw e;
    }
    return encryptedData;
}



public String DecryptData(String hexString, String skey) throws Exception {

    String decryptedData = "";
    try{
       byte [] bData =  convToBinary(hexString);

       String alg = "AES/ECB/NoPadding";            
       SecretKey key = new SecretKeySpec(skey.getBytes(), alg.replaceFirst("/.*", ""));           
       Cipher cipher = Cipher.getInstance(alg);
       cipher.init(Cipher.DECRYPT_MODE, key);
       byte[] decoded = cipher.doFinal(bData);
       decryptedData = new String(decoded);
    }
    catch(Exception e){
        throw e;
    }
    return decryptedData;
}

Ответы [ 2 ]

3 голосов
/ 07 июля 2010

Я хотел бы предложить, возможно, просмотреть документацию по API для используемого вами JDE, в частности, я бы предположил, что пакет net.rim.device.api.crypto, вероятно, будет наиболее интересным для вас.

net.rim.device.api.crypto.Crypto также может быть хорошим классом для изучения, поскольку он содержит статические методы для шифрования и дешифрования.

1 голос
/ 09 июля 2010

удалось заставить его работать ...

byte[] keyData = keyString.getBytes();

    AESKey key = new AESKey(keyData);
    NoCopyByteArrayOutputStream out = new NoCopyByteArrayOutputStream();
    AESEncryptorEngine engine = new AESEncryptorEngine(key);
    BlockEncryptor encryptor = new BlockEncryptor(engine, out);
    encryptor.write(data, 0, data.length);
    int finalLength = out.size();

    byte[] cbytes = new byte[finalLength];
    System.arraycopy(out.getByteArray(), 0, cbytes, 0, finalLength);
    encryptedData = bytesToHex(cbytes);
    return encryptedData;
...