Question

Je veux Chiffrer les données et Décrypter à l'aide de l'algorithme AES J2ME avec château gonflable peut me donner un exemple de code pour que

Je veux utiliser BCE PKCS5Padding

Merci à l'avance.

Était-ce utile?

La solution

Je suis sûr qu'il ya des exemples là, mais je ne les ai pas trouvé. Voici quelques conseils pour vous aider à démarrer. Vous devez apprendre comment connecter les classes de la Colombie-Britannique ensemble. Tout d'abord, obtenir le code source bouncycastle et être prêt à regarder quand vous avez des questions. Il est en fait très lisible alors ne pas avoir peur d'examiner quand la documentation est pauvre. Par exemple, de nombreuses classes veulent une instance d'un objet CipherParameters, mais il est rare que la documentation de préciser plus en détail. Cependant, dans le code source, il est évident que pour les classes de mise en œuvre sont attendus.

Choisissez un des moteurs AES, par exemple AESEngine, comme le moteur de cryptage. Suivant choisir un mode; BCE est rarement correcte, donc par exemple si vous choisissez le mode CBC puis créer un objet à partir de votre CBCBlockCipher objet AESEngine. Ensuite, utilisez cet objet pour créer un objet PaddedBufferBlockCipher. Le constructeur par défaut utilise padding PKCS7 qui est identique au rembourrage de PKCS5 que vous voulez. Maintenant, vous devez créer un objet pour maintenir la clé et IV. Ceci est l'interface CipherParameters. Vous créez l'objet en deux étapes. Tout d'abord, vous créez un objet KeyParameter avec votre clé. Ensuite, vous créez un objet ParametersWithIV avec votre objet et votre KeyParameter IV. Cet objet est fourni à la méthode init de l'objet PaddedBufferBlockCipher et vous êtes prêt à aller.

EDIT

Voici petit exemple:

private static byte[] cipherData(PaddedBufferedBlockCipher cipher, byte[] data)
        throws Exception
{
    int minSize = cipher.getOutputSize(data.length);
    byte[] outBuf = new byte[minSize];
    int length1 = cipher.processBytes(data, 0, data.length, outBuf, 0);
    int length2 = cipher.doFinal(outBuf, length1);
    int actualLength = length1 + length2;
    byte[] result = new byte[actualLength];
    System.arraycopy(outBuf, 0, result, 0, result.length);
    return result;
}

private static byte[] decrypt(byte[] cipher, byte[] key, byte[] iv) throws Exception
{
    PaddedBufferedBlockCipher aes = new PaddedBufferedBlockCipher(new CBCBlockCipher(
            new AESEngine()));
    CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(key), iv);
    aes.init(false, ivAndKey);
    return cipherData(aes, cipher);
}

private static byte[] encrypt(byte[] plain, byte[] key, byte[] iv) throws Exception
{
    PaddedBufferedBlockCipher aes = new PaddedBufferedBlockCipher(new CBCBlockCipher(
            new AESEngine()));
    CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(key), iv);
    aes.init(true, ivAndKey);
    return cipherData(aes, plain);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top