Comment configurer le cryptage et le décryptage entre Android et l’application Web ASP.Net ?

Dans ce chiffrement, nous allons utiliser une clé secrète pour chiffrer la chaîne. L’algorithme utilisé sera AES avec le mode CBC (Cipher Block Chaining).

Le code C# utilisera le rembourrage PKCS7, car PKCS5 n’y est pas disponible. Dans Android, il utilise le rembourrage PKCS5 en interne, même si nous spécifions le rembourrage PKCS7 dans la transformation de chiffrement. Nous spécifions donc également le mode de remplissage PKCS5. Lorsqu’ils sont testés, ils produisent tous les deux les mêmes résultats corrects.

Dans cette méthode de chiffrement, une clé unique est utilisée à la fois pour la clé secrète et le sel.

Lors de l’utilisation de clés différentes pour la clé secrète et le sel, il y avait une certaine différence entre les versions encodées en Base64 du sel (ou vecteur d’initialisation). Les versions encodées en Base64 ont été créées par les codes Android et C#, et elles étaient différentes les unes des autres.

Pour surmonter cela, nous avons utilisé une clé unique qui servira à la fois de clé secrète et de sel.

Le code pour la partie Android est le suivant :

public class EncryptionUtils { chaîne finale privée characterEncoding = "UTF-8" ; chaîne finale privée cipherTransformation = "AES/CBC/PKCS5Padding" ; Chaîne finale privée aesEncryptionAlgorithm = "AES" ; public String encrypt(String plainText, String key) lance UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { byte [] plainTextbytes = plainText.getBytes(characterEncoding); octet [] keyBytes = getKeyBytes(clé); // renvoie Base64.encodeToString(encrypt(plainTextbytes,keyBytes, keyBytes), Base64.DEFAULT); return Base64.encodeToString(encrypt(plainTextbytes,keyBytes, keyBytes), Base64.NO_WRAP); } chaîne publique déchiffrer (chaîne texte crypté, clé de chaîne) lance KeyException, GeneralSecurityException, GeneralSecurityException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException, IOException { byte [] cipheredBytes = Base64.decode(encryptedText, Base64.DEFAULT); octet[] keyBytes = getKeyBytes(clé); renvoie une nouvelle chaîne (décrypter (cipheredBytes, keyBytes, keyBytes), characterEncoding); } public byte [] decrypt( byte[] cipherText, byte[] key, byte [] initialVector) lance NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance(cipherTransformation); SecretKeySpec secretKeySpecy = new SecretKeySpec(key, aesEncryptionAlgorithm); IvParameterSpec ivParameterSpec = new IvParameterSpec(initialVector); cipher.init(Cipher.DECRYPT_MODE, secretKeySpecy, ivParameterSpec); cipherText = cipher.doFinal(cipherText); renvoie le texte chiffré ; } public byte[] encrypt(byte[] plainText, byte[] key, byte [] initialVector) lance NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance(cipherTransformation); SecretKeySpec secretKeySpec = new SecretKeySpec(clé, aesEncryptionAlgorithm); IvParameterSpec ivParameterSpec = new IvParameterSpec(initialVector); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec); plainText = cipher.doFinal(plainText); retourner plainText ; } private byte[] getKeyBytes(String key) lance UnsupportedEncodingException{ byte [] keyBytes= new byte[16] ; octet [] parameterKeyBytes= key.getBytes(characterEncoding); System .arraycopy(parameterKeyBytes, 0 , keyBytes, 0, Math.min(parameterKeyBytes.length, keyBytes.length)); retourner keyBytes ; } } Lecture recommandée : Copier dans le presse-papiers en JavaScript

Le code de la partie C# est le suivant :

// Crypte le texte en clair à l'aide d'une clé AES 128 bits et d'un chiffrement par bloc de chaîne et renvoie une chaîne encodée en base64 public string Encrypt(String plainText, String key) { var plainBytes = Encoding.UTF8.GetBytes(plainText); return Convert.ToBase64String(Encrypt(plainBytes, GetRijndaelManaged(key))); } public string Déchiffrer (chaîne texte crypté, clé de chaîne) { var octets cryptés = Convert.FromBase64String (texte crypté); return Encoding.UTF8.GetString(Decrypt(encryptedBytes, GetRijndaelManaged(key))); } public byte[] Encrypt(byte[] plainBytes, RijndaelManaged rijndaelManaged) { return rijndaelManaged.CreateEncryptor() .TransformFinalBlock(plainBytes, 0, plainBytes.Length); } public byte [] Décrypter (octet [] données cryptées, RijndaelManaged rijndaelManaged) { return rijndaelManaged.CreateDecryptor() .TransformFinalBlock (données cryptées, 0, données cryptées. Longueur); } public RijndaelManaged GetRijndaelManaged(String secretKey) { var keyBytes = new byte[16]; var secretKeyBytes = Encoding.UTF8.GetBytes(secretKey); Array.Copy(secretKeyBytes, keyBytes, Math.Min(keyBytes.Length, secretKeyBytes.Length)); return new RijndaelManaged { Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7, KeySize = 128, BlockSize = 128, Key = keyBytes, IV = keyBytes } ; }

Avec l’aide du code ci-dessus, on peut crypter une chaîne sur une plate-forme, puis la décrypter sur l’autre plate-forme, et vice-versa.

Lecture recommandée: ,warComment voir le code du fichier ‘.ctp’ aussi coloré que le fichier ‘.php’ dans NetBeans

How to save data to Firebase in Android?

Objectifs:

Le but de ce blog est d’informer les lecteurs sur la façon d’enregistrer des données dans la base de données Firebase Realtime d’Android. Des types de données simples, tels que des chaînes, peuvent être écrits dans cette base de données, ainsi que des types de données plus complexes, tels que des objets Java.

Conditions préalables:

Pour utiliser la base de données Firebase Realtime dans Android, nous avons besoin d’un projet Android Studio pour créer l’application Android. En plus de cela, nous avons besoin d’un projet Firebase pour connecter la base de données en temps réel Firebase à l’application Android.

Pour créer un nouveau projet Firebase, suivez les étapes ci-dessous : – �

1. Ouvrez l’URL – https://console.firebase.google.com

2. Cliquez ensuite sur “Ajouter un projet“.

3.Ensuite, entrez le nom du projet Firebase et acceptez les conditions. Après cela, continuez en cliquant sur le “Continuer” bouton.

4.�Ensuite, sur l’écran d’accueil suivant, cliquez sur “Ajoutez Firebase à votre application Android“. De la même manière, entrez le nom du package et cliquez sur Suivant.

5. Maintenant, téléchargez le fichier google-services.json sur votre système local. Ensuite, copiez ce fichier à l’emplacement spécifié dans le projet Android Studio.

6. Suivez le petit processus à l’étape suivante pour ajouter 3 lignes de code à la construction. Fichiers Gradle au niveau du projet et de l’application.

7.“Ensuite, terminez d’ajouter l’application Android au projet Firebase.

8. Ouvrez la section Base de données en cliquant sur le “Base de données” dans le menu de gauche. Cliquez ensuite sur l’option “Créer une base” lien.

9. Le processus de création du projet Firebase est maintenant terminé.

Lecture recommandée: ,warComment récupérer des données de Firebase sur Android ?

Ajoutez la ligne suivante dans la version au niveau de l’application. gradle pour ajouter la bibliothèque pour commencer à utiliser la base de données en temps réel Firebase.

implémentation 'com.google.firebase:firebase-database:16.0.6'

Implémentation du code

Avant d’aller plus loin, comprenons ce qu’est une référence Firebase ? Dans la base de données Firebase, les données sont stockées à un emplacement. Par conséquent, le pointeur vers cet emplacement est appelé référence Firebase. Plusieurs références pointent vers le même emplacement si elles sont initiées avec le même chemin.

Créez une instance de Firebase Database en écrivant la ligne de code suivante :

Private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

Créez maintenant des références des chemins où les données seraient stockées dans la base de données en temps réel. Comme les données sont stockées au format JSON dans la base de données Firebase, les chemins spécifiés dans les références sont les clés de l’objet JSON.

Lecture recommandée: ,warComment récupérer les données de Firebase en Swift Language (iOS) ?

La ligne de code suivante doit être ajoutée pour créer une référence au nœud racine dans la base de données :

Private DatabaseReference mDatabaseReference = mDatabase.getReference();

Ensuite, créez un enfant sous le nœud racine dans la base de données et utilisez cette clé enfant pour ajouter les données correspondantes. Après cela, une chaîne peut être ajoutée à la base de données en suivant les lignes de code mentionnées ci-dessous :

mDatabaseReference = mDatabase.getReference().child("nom"); mDatabaseReference.setValue("Donald Duck");

Les lignes de code ci-dessus inséreraient les données dans la base de données. La base de données du projet Firebase ressemblera à ceci :

La base de données Firebase Realtime prend également en charge la sauvegarde d’objets Java complexes. Par conséquent, une classe de modèle doit d’abord être créée pour enregistrer les objets Java. Assurez-vous également d’ajouter un constructeur vide et les getters de chaque attribut dans la classe.

Voici le code d’une classe de modèle de démonstration :

Voici le code pour enregistrer un objet de cette classe dans la base de données Firebase :

Utilisateur utilisateur = nouvel utilisateur("Mickey", 18); mDatabaseReference = mDatabase.getReference().child("utilisateur"); mDatabaseReference.setValue(utilisateur);

Le code mentionné ci-dessus insérerait les données d’objet dans la base de données Firebase comme suit :

Lecture recommandée: ,warComment enregistrer des données sur Firebase en Swift Language (iOS) ?

Conclusion:

Vous savez maintenant comment enregistrer des données dans la base de données en temps réel Firebase. En outre, Knowband propose un module de création d’applications mobiles de commerce électronique pour les propriétaires de boutiques en ligne. Ainsi, le plugin Mobile App Maker est disponible pour des plateformes comme PrestaShop, OpenCart, WooCommerce et Magento 2. Ainsi, en quelques clics et sans difficulté, vous pouvez créer votre application native et réactive pour smartphones et tablettes.

Comment récupérer des données de Firebase sur Android ?

Objectifs du blog

Après avoir lu ce blog, nous pourrons récupérer les données de Firebase Realtime Database. Ces données peuvent inclure des types de données simples, tels que des chaînes, ou des types de données complexes tels que des objets Java.

Conditions préalables

Nous devons disposer d’un projet Android Studio et d’un projet Firebase pour pouvoir utiliser la base de données en temps réel Firebase. Créez un nouveau projet Android Studio (ou utilisez n’importe quel projet existant). Ce projet Android Studio sera utilisé pour travailler avec la base de données en temps réel. Suivez les étapes ci-dessous pour créer le projet Firebase –

1. Cliquez sur https://console.firebase.google.com

2. Cliquez sur “Ajouter un projet” bouton.

3. Entrez le nom du projet et acceptez les conditions et cliquez sur “Continuer” bouton.

 

4. Ajoutez ensuite l’application Android à votre projet. Il faut entrer le nom du package de l’application. Cliquez sur Suivant.

5. Téléchargez le fichier google-services.json et déplacez ce fichier vers l’emplacement du projet Android dans Android Studio, comme spécifié à l’écran.

6. À l’étape suivante, il y aurait un petit tutoriel pour ajouter 3 lignes de code dans les fichiers build.gradle au niveau du projet et au niveau de l’application. Ajoutez-les en conséquence.

7. Terminez ensuite ce processus d’ajout de l’application Android au projet.

8. Cliquez ensuite sur l’option “Base de données” dans le menu de gauche, puis cliquez sur le bouton “Créer une base de données”.

 

,war

9. La configuration de Firebase est terminée Ajoutez maintenant la bibliothèque Firebase pour utiliser la base de données en temps réel Firebase dans le fichier build.gradle au niveau de l’application. Cela peut être fait en ajoutant la ligne suivante :

implémentation 'com.google.firebase:firebase-database:16.0.6'

Implémentation du code

Avant de récupérer les références, vous devrez comprendre ce qu’est une référence Firebase. Une référence Firebase pointe vers un emplacement dans la base de données Firebase où les données sont stockées. Même si vous créez plusieurs références, elles partagent toutes la même connexion à condition que vous ayez utilisé le même chemin lors de la création de la référence à partir de l’instance de base de données. Tout d’abord, nous devons disposer d’une instance de la base de données Firebase pour pouvoir l’utiliser. L’instance peut être créée par la ligne de code suivante.

 

Private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

 

Il est maintenant nécessaire de créer des références des chemins où les données sont stockées dans la base de données. Comme les données de la base de données Firebase sont stockées au format JSON, les clés de l’objet JSON sont les chemins spécifiés dans les références. La référence au nœud racine peut être créée par la ligne de code suivante :

 

Private DatabaseReference mGetReference = mDatabase.getReference();

 

Après avoir obtenu la référence de la base de données, un écouteur asynchrone doit être attaché à la référence de la base de données qui écoute activement tout changement effectué dans la base de données. Cet écouteur renvoie initialement un instantané de données de la base de données pour la première fois lorsqu’elle est attachée. Ensuite, l’instantané des données est renvoyé lorsqu’une modification est apportée au chemin vers lequel pointe la référence de la base de données. Habituellement, la base de données contient le même type de données, mais supposons que la base de données contienne des données de types différents. Vous trouverez ci-dessous la capture d’écran de la base de données contenant des données factices :

 

Pour extraire la base de données de cette base de données, attachez le ValueEventListener à la référence de la base de données. L’écouteur peut être ajouté par le code suivant :

 

mGetReference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if (dataSnapshot.exists()){ HashMap dataMap = (HashMap ) dataSnapshot.getValue(); for (String key : dataMap.keySet()){ Object data = dataMap.get(key); essayez{ HashMap userData = (HashMap ) Les données; User mUser = new User((String) userData.get("name"), (int) (long) userData.get("age")); addTextToView(mUser.getName() + " - " + Integer.toString(mUser.getAge())); }catch (ClassCastException cce){ // Si l'objet ne peut pas être converti en HashMap, cela signifie qu'il est de type String. try{ String mString = String.valueOf(dataMap.get(key)); addTextToView(mString); }catch (ClassCastException cce2){ } } } } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } });

Après avoir attaché l’écouteur, il est d’abord exécuté en renvoyant initialement toutes les données de la base de données à ce moment-là. Cet écouteur sera appelé plus tard au moment où un changement aura lieu dans la base de données sur le chemin pointé par la référence à laquelle l’écouteur est attaché.

Résumé

Après avoir suivi la procédure ci-dessus, vous pourrez récupérer les données de la base de données Firebase Realtime dans Android. Si vous rencontrez des problèmes, n’hésitez pas à nous contacter à support@knowband.com. Nous proposons également un développement et des modules personnalisés pour les principales plates-formes CMS telles que Prestashop, Opencart, Magento, Magento 2 et Woocommerce. Jetez un œil à nos plus populaires Créateur d’applications mobiles Woocommerce No Code:

 

Comment se fait la gestion de session dans Android ?

Sous Android, la gestion des sessions se fait à l’aide de certaines techniques de stockage de données. Ces données peuvent être stockées dans certaines variables globales, la base de données ou les préférences de l’application.

Mais il y a un problème avec les variables globales. Les variables globales ne peuvent conserver les données que jusqu’à l’ouverture de l’application. Une fois l’application fermée, les variables globales sont détruites et leurs valeurs sont perdues.

Les données stockées dans la base de données et les préférences de l’application ne sont pas perdues lorsque l’application est fermée.

Donc, ceux-ci sont utilisés pour la gestion de session. Mais le stockage et l’accès aux données dans la base de données sont plus lents par rapport aux préférences.

Pour cette raison, les préférences sont utilisées pour la gestion des sessions.

Dans le contexte Android, ces préférences sont appelées SharedPreferences. Ceux-ci permettent un stockage, un accès et une mise à jour plus rapides des données.

Les préférences partagées sont normalement utilisées pour stocker les paramètres de l’application.

Trouvez les étapes ci-dessous pour utiliser SharedPreferences dans l’application pour stocker et accéder aux données pour maintenir la session.

1. Initialisez l’éditeur SharedPreferences pour stocker les données dans les SharedPreferences de l’application.

SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences-key-name", MODE_PRIVATE); Éditeur SharedPreferences.Editor = prefs.edit();

2. Mettez la valeur dans l’objet éditeur à enregistrer dans SharedPreferences. Ces valeurs peuvent être du type – String, boolean, int, float, etc. Après avoir ajouté les valeurs, exécutez la méthode commit() de Editor pour enregistrer les valeurs.

editor.putString("key-username", "John Doe"); éditeur.commit();

3. Pour récupérer les données de SharedPreferences, l’objet Editor n’est pas nécessaire. Obtenez simplement la chaîne requise ou toute autre valeur en utilisant la méthode correspondante.

SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences-key-name ", MODE_PRIVATE); String username = prefs.getString("key-username", "default-value");

Le deuxième paramètre de la méthode getString() est la valeur par défaut qui est renvoyée, au cas où aucune valeur n’est enregistrée dans les préférences correspondant à cette clé.

4. Pour effacer une clé SharedPreference particulière, utilisez la méthode remove().

SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences-key-name", MODE_PRIVATE); Éditeur SharedPreferences.Editor = prefs.edit(); editor.remove("key-username"); éditeur.commit();

5. Pour effacer toutes les SharedPreferences enregistrées, utilisez la méthode clear().

SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences-key-name", MODE_PRIVATE); Éditeur SharedPreferences.Editor = prefs.edit(); éditeur.clear(); éditeur.commit();

Trouvez ci-dessous l’exemple d’utilisation de ce SharedPreferences pour la gestion de session : –

Lorsqu’un utilisateur se connecte à l’application, enregistrez le nom d’utilisateur ou toute autre valeur correspondante de l’utilisateur dans SharedPreferences. Utilisez cette valeur enregistrée pour reconnecter l’utilisateur lorsque l’application est rouverte ou cette valeur est accessible dans n’importe quelle activité de l’application pour obtenir le nom d’utilisateur. Lorsque l’utilisateur clique sur Déconnexion, effacez les champs liés à l’utilisateur pour déconnecter l’utilisateur.

Mettre les éléments en mode linéaire et au bas de l'écran sous Android

La meilleure façon de mettre des éléments de manière linéaire dans Android est d'utiliser LinearLayout. Spécifiez l'attribut 'orientation'du LinearLayout à'verticale‘.

Maintenant, n'importe quel nombre d'éléments insérés dans LinearLayout sera dans l'ordre vertical.

Pour aligner les éléments au bas de l'écran, utilisez ConstraintLayout et ajoutez des contraintes à LinearLayout pour le lier au bas de l'écran.

Recherchez l'exemple de code ci-dessous où deux TextView (s) sont placés l'un sous l'autre et le conteneur LinearLayout est attaché au bas de l'écran.

<? xml version = "1.0" encoding = "utf-8"?> <android.support.constraint.ConstraintLayout xmlns: android = "https://schemas.android.com/apk/res/android" xmlns: app = "https://schemas.android.com/apk/res-auto" xmlns: tools = "https://schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height = "match_parent" outils: context = ". MainActivity"> <LinearLayout android: layout_width = "match_parent" android: layout_height = "wrap_content" android: orientation = "vertical" app: layout_constraintBottom_toBottomOf = "parent" app: layout_constraintEnd_toEndOfOn "" "". "> <TextView android: id =" @ + id / element1 "android: layout_width =" wrap_content "android: layout_height =" wrap_content "android: text =" Il s'agit de l'élément 1 "/> <TextView android: id =" @ + id / element2 "android: layout_width =" match_parent "android: layout_height =" wrap_content "android: text =" Il s'agit de l'élément 2 "/> </ LinearLayout> </android.support.constraint.ConstraintLayout>

Comment créer une boîte de dialogue d'alerte dans Android?

La boîte de dialogue d'alerte peut être utilisée pour afficher un message dans une boîte de dialogue contextuelle, un champ de texte à saisir ou une vue personnalisée dans la boîte de dialogue.

Pour que la vue soit affichée dans la boîte de dialogue contextuelle, elle doit être créée par programme ou via XML. Ensuite, la vue doit être définie dans la boîte de dialogue afin que cette vue soit visible pour l'utilisateur dans la boîte de dialogue.

Recherchez les étapes ci-dessous pour créer une boîte de dialogue dans laquelle un champ sera créé pour la saisie de l'utilisateur.

1. Créez une vue à afficher dans la boîte de dialogue.

final EditText userInput = new EditText (this);

2. Création et affichage d'une boîte de dialogue.

new AlertDialog.Builder (this) .setTitle ("Le titre de la boîte de dialogue va ici") .setView (userInput) .setPositiveButton ("Submit", nouveau DialogInterface.OnClickListener () {@Override public void onClick (DialogInterface, avec lequel ) {// Gérez votre action ici lorsque vous cliquez sur le bouton "Soumettre"}}. ici lorsque le bouton "Annuler" est cliqué}}) .show ();