Comment déchiffrer des données en Java qui ont été chiffrées dans Obj-c

James Brown

Je crypte en ojb-c avec SecKeyEncryptedData et j'essaye de décrypter en Java avec javax.Cipher et je rencontre un problème.

Je suis récemment passé à faire de longs blocs et j'ai dû utiliser un cryptage symétrique avec la clé AES cryptée avec la paire de clés asymétriques. J'ai des problèmes de décodage.

J'ai la clé iOS kSecKeyAlgorithmRSAEncryptionPKCS1 travaillant pour des données asymétriques assorties à Cipher.getInstance ("RSA / ECB / PKCS1Padding") en Java. Cela décode les blocs courts.

Comme j'ai besoin d'envoyer des blocs plus longs et que j'essaie de passer à kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM sur iOS et qu'il crypte bien, mais je ne trouve pas la méthode à utiliser dans Cipher pour le décrypter et je ne comprends pas si cela doit être fait en 2 étapes dans le cloud en Java.

OBJ-C: Java: SecKeyAlgorithm algorithm = kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM; NSData* cipherText = nil; cipherText = (NSData*)CFBridgingRelease( // ARC takes ownership
SecKeyCreateEncryptedData(self.pubKey, algorithm, (__bridge CFDataRef)data, &error));
try { cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.DECRYPT_MODE, priv); byte[] dog = decoder.decode(encString); dec = cipher.doFinal(dog); res = new String(dec);
} // handle errors

Le décodage échoue évidemment.

Ma question est donc en 2 parties.

  1. Existe-t-il un type de chiffrement qui effectuera le décodage nécessaire ou dois-je extraire la clé AES chiffrée et la déchiffrer en premier?
  2. Si j'ai besoin de le casser, combien de temps dure cette clé AES cryptée dans le bloc de données et, si vous connaissez les chiffrements pour cela, ce serait fantastique.
goût2

y a-t-il un type de chiffrement qui fera le décodage nécessaire

Vous pouvez lire la documentation de Cipher . Je crois que tu cherchesRSA/ECB/OAEPWithSHA-256AndMGF1Padding

Je vois que la désignation ne correspond pas exactement au nom Obj-C, mais c'est une norme courante, donc cela vaut la peine d'essayer

Comme j'ai besoin d'envoyer des blocs plus longs et que j'essaye de passer à kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM

Vous pouvez essayer de rechercher «cryptage hybride». Les chiffrements asymétriques sont TRÈS lents par rapport aux chiffrements symétriques et sont destinés à ne chiffrer qu'une quantité limitée de données.

Certaines implémentations peuvent quand même crypter des données plus longues (pour chaque entrée de 256 bits fournissant une sortie de 2048 ou 4096 bits), Java se plaindra simplement et s'arrêtera

Un cryptage approprié serait donc

  • crypter les données avec une clé radom (DEK - clé de cryptage des données) à l'aide d'un chiffrement symétrique
  • crypter la DEK à l'aide d'une clé publique asymétrique

Si le kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCMne serait pas homologue (compatible) avec RSA/ECB/OAEPWithSHA-256AndMGF1Padding, vous pouvez toujours utiliser le remplissage PKCS # 1 1.5 (l'ancien) avec cette approche.

Edit: cette réponse peut être utile lorsque vous travaillez avec OAEP aussi RSA / ECB / OAEPWithSHA-256AndMGF1Padding mais avec MGF1 utilisant SHA-256?

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

comment fusionner des chaînes qui ont des sous-chaînes en commun pour produire des groupes dans un bloc de données en Python

Décrypter des données avec CCCryptor dans Objective-C qui ont été cryptées avec CFB dans Go

Comment filtrer les lignes qui ont des doublons dans une demande de base de données

Comment lire les données de Mongodb qui ont un nom d'élément en double en c #

Comment gérer les données qui ont déjà des en-têtes?

CallContext porte en avant les données précédentes qui ont été définies

Impossible de déchiffrer les données AES à l'aide d'Obj-C qui ont été chiffrées à l'aide de Java

Comment incorporer des données dans un graphique qui a été construit dans ggplot2 en utilisant les données d'un autre fichier (R)?

Essayer de déchiffrer une chaîne en utilisant openssl / golang qui a été chiffrée dans des rails

Comment déchiffrer des données à l'aide de RSACng qui sont précédemment cryptées avec RSACryptoServiceProvider

Comment supprimer des données qui ont une clé étrangère dans jpa java

Comment déplacer des données qui ont le même en-tête dans la même colonne?

Comment déchiffrer des données à l'aide de la classe phpseclib Crypt_RSA qui a été chiffrée par travist / jsencrypt

Décrypter les données en utilisant PHP qui ont été cryptées avec Rijndael (C #)

Comment écrire des données qui ont été lues et analysées dans un autre fichier?

Décrypter les données dans une requête PostgreSQL qui a été chiffrée avec C #

Comment changer le style des cellules qui ont été modifiées dans ag-Grid?

Comment trouver des données dans un tableau d'objets dans mongodb qui ont un ordre différent?

Comment valider les données qui ont été modifiées dans before_save

Puis-je décoder des données avec base64 en php qui ont été encodées en java?

Stata - Comment créer des variables T qui ont des valeurs pour chaque t dans les données de panel

Comment utiliser les données JSON dans D3 qui ont été reçues de WEB-Service?

Comment obtenir les données démographiques (âge, sexe) des personnes qui ont téléchargé l'application

Comment gonfler en Python certaines données qui ont été dégonflées par Peoplesoft (Java) ?

Comment obtenir des valeurs de JtextField qui ont été créées dans le constructeur

BeautifulSoup-Python : Comment scraper des données qui n'ont pas encore été chargées ?

Comment importer des données qui ont une grande colonne int dans la recherche élastique ?

Comment garder une trace des colonnes qui ont été modifiées dans un cadre de données pandas

Comment puis-je combiner certaines données json qui ont été définies dans des ensembles de chaînes à la place ?

TOP liste

  1. 1

    comment afficher un bouton au-dessus d'un autre élément ?

  2. 2

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  3. 3

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  4. 4

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  5. 5

    Conversion double en BigDecimal en Java

  6. 6

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Passer la taille d'un tableau 2D à une fonction ?

  9. 9

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  10. 10

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  11. 11

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  12. 12

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  13. 13

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  14. 14

    Exporter la table de l'arborescence vers CSV avec mise en forme

  15. 15

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  16. 16

    Créer un système Buzzer à l'aide de python

  17. 17

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  18. 18

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  19. 19

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  20. 20

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  21. 21

    Microsoft.WebApplication.targets

chaudétiquette

Archive