2011-06-18 2 views
-4

J'ai trouvé quelques exemples de code sur Internet qui sont des octets de cryptage utilisant CipherInputStream ou quelque chose ... Et si j'avais un fichier contenant 1000 bits, comment puis-je appliquer le DES? Je le fais en JavaLes algorithmes de cryptage comme DES devraient-ils être appliqués sur des bits ou des octets?

+0

Vous savez que les octets sont simplement des groupes de 8 bits, n'est-ce pas? – zneak

+0

Oui, je sais! En fait, j'ai aussi un tableau d'octets qui a des valeurs comme 7, -115,88 .... et ainsi de suite –

+0

Les gens vous aident, soyez gentil! – user774411

Répondre

1

Java n'a pas de type primitif qui vous permet d'accéder à quelque chose de moins qu'un octet. Vous aurez donc besoin de travailler sur des octets, et non des bits en Java. Et si j'avais un fichier contenant 1 000 bits, comment puis-je appliquer le DES sur celui-ci?

Utiliser des octets. Les méthodes Cipher.doUpdate et Cipher.doFinal utilisent des octets, plutôt un tableau d'entre eux. Utilisez un schéma de remplissage approprié pour tenir compte des données non capitonnées.

+0

... et combien de bits représentent un octet donné par 'java.lang.Byte.SIZE'. –

+0

@Fatal, le JLS le définit. –

+0

Honte à moi. Quel est le JLS? :-) –

1

C'est une question assez raisonnable, malgré les votes négatifs.

De nombreux modes de cryptage (tels que CBC) requièrent que l'entrée soit un multiple de la taille de bloc du cryptage sous-jacent (par exemple 16 octets pour AES ou 8 octets pour DES). Pour ce faire, on utilise un système de remplissage. Que vous puissiez chiffrer un texte en clair avec une longueur de bits arbitraire dépend du schéma de remplissage que vous utilisez.

Le schéma de remplissage le plus couramment utilisé (c'est-à-dire le remplissage PKCS # 5) ajoute n octets de valeur n au texte en clair. Cela nécessite évidemment que le texte en clair soit en octets. Mais il existe des schémas de remplissage moins connus qui permettent des entrées arbitraires. Par exemple, le "remplissage de bit" ajoute un seul bit à votre texte en clair et ajoute autant de 0 bits que nécessaire jusqu'à ce que la longueur de votre entrée soit un multiple de la taille de bloc de votre chiffre. Par exemple, la norme ISO/IEC 9797-1 le propose. Pour décider si vous voulez prendre en charge des longueurs de bits arbitraires dans votre application, vous devez également prendre en compte les bibliothèques de chiffrement que vous souhaitez utiliser. Alors que certains algorithmes de chiffrement ont été standardisés pour permettre des entrées de tailles arbitraires en bits, il peut ne pas être implémenté par votre bibliothèque de chiffrement. E.g. la fonction de hachage SHA-1 est bien définie pour les entrées telles que la chaîne de 4 bits '0101', mais pourrait avoir du mal à trouver une bibliothèque qui peut réellement calculer ce hachage.

Questions connexes