Come impostare la crittografia e la decrittografia tra l’applicazione Web Android e ASP.Net?

In questa crittografia, utilizzeremo una chiave segreta per crittografare la stringa. L’algoritmo utilizzato sarà AES con modalità CBC (Cipher Block Chaining).

Il codice C# utilizzerà il riempimento PKCS7, poiché PKCS5 non è disponibile lì. In Android, utilizza internamente il riempimento PKCS5, anche se specifichiamo il riempimento PKCS7 nella trasformazione della cifratura. Quindi, stiamo anche specificando la modalità di riempimento PKCS5. Quando testati, entrambi producono gli stessi risultati corretti.

In questo metodo di crittografia, viene utilizzata un’unica chiave sia per la chiave segreta che per il sale.

Quando si utilizzano chiavi diverse per la chiave segreta e il salt, c’era una certa differenza tra le versioni con codifica Base64 del salt (o vettore di inizializzazione). Le versioni con codifica Base64 sono state create da codici Android e C# ed erano diverse l’una dall’altra.

Per ovviare a questo, abbiamo utilizzato un’unica chiave che fungerà sia da chiave segreta che da sale.

Il codice per la parte Android è il seguente:

public class EncryptionUtils { private final String characterEncoding = "UTF-8"; private final String cipherTransformation = "AES/CBC/PKCS5Padding"; private final String aesEncryptionAlgorithm = "AES"; public String encrypt(String plainText, String key) genera UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { byte [] plainTextbytes = plainText.getBytes(characterEncoding); byte [] keyBytes = getKeyBytes(chiave); // restituisce Base64.encodeToString(encrypt(plainTextbytes,keyBytes, keyBytes), Base64.DEFAULT); return Base64.encodeToString(encrypt(plainTextbytes,keyBytes, keyBytes), Base64.NO_WRAP); } public String decrypt(StringcryptedText, String key) genera KeyException, GeneralSecurityException, GeneralSecurityException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException, IOException { byte [] cipheredBytes = Base64.decode(encryptedText, Base64.DEFAULT); byte[] keyBytes = getKeyBytes(chiave); restituisce una nuova stringa (decrypt(cipheredBytes, keyBytes, keyBytes), characterEncoding); } public byte [] decrypt( byte[] cipherText, byte[] key, byte [] initialVector) genera NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance(cipherTransformation); SecretKeySpec secretKeySpecy = new SecretKeySpec(chiave, aesEncryptionAlgorithm); IvParameterSpec ivParameterSpec = new IvParameterSpec(initialVector); cipher.init(Cipher.DECRYPT_MODE, secretKeySpecy, ivParameterSpec); cipherText = cipher.doFinal(cipherText); restituisce testo cifrato; } public byte[] encrypt(byte[] plainText, byte[] key, byte [] initialVector) genera NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance(cipherTransformation); SecretKeySpec secretKeySpec = new SecretKeySpec(chiave, aesEncryptionAlgorithm); IvParameterSpec ivParameterSpec = new IvParameterSpec(initialVector); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec); testo in chiaro = cifra.doFinal(testo in chiaro); restituire il testo in chiaro; } private byte[] getKeyBytes(String key) genera UnsupportedEncodingException{ byte [] keyBytes= new byte[16]; byte [] parametroKeyBytes= key.getBytes(characterEncoding); Sistema .arraycopy(parametroKeyBytes, 0 , keyBytes, 0, Math.min(parametroKeyBytes.length, keyBytes.length)); restituire keyByte; } } Lettura consigliata: copia negli appunti in JavaScript

Il codice per la parte C# è il seguente:

// Crittografa il testo in chiaro utilizzando una chiave AES a 128 bit e un Chain Block Cipher e restituisce una stringa codificata in base64 public string Encrypt(String plainText, String key) { var plainBytes = Encoding.UTF8.GetBytes(plainText); return Convert.ToBase64String(Encrypt(plainBytes, GetRijndaelManaged(key))); } public string Decrypt(StringcryptedText, String key) { varcryptedBytes = Convert.FromBase64String(encryptedText); return Encoding.UTF8.GetString(Decrypt(encryptedBytes, GetRijndaelManaged(chiave))); } public byte[] Encrypt(byte[] plainBytes, RijndaelManaged rijndaelManaged) { return rijndaelManaged.CreateEncryptor() .TransformFinalBlock(plainBytes, 0, plainBytes.Length); } byte pubblico[] Decrypt(byte[] dati crittografati, RijndaelManaged rijndaelManaged) { return rijndaelManaged.CreateDecryptor() .TransformFinalBlock(encryptedData, 0,cryptedData.Length); } 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 }; }

Con l’aiuto del codice sopra, è possibile crittografare una stringa su una piattaforma, quindi decrittografarla sull’altra piattaforma e viceversa.

Raccomandato Leggi:ï ¿½Come vedere il codice del file ‘.ctp’ colorato come il file ‘.php’ in NetBeans

How to save data to Firebase in Android?

Obiettivi:

Lo scopo di questo blog è informare i lettori su come salvare i dati nel database Firebase Realtime di Android. In questo database possono essere scritti tipi di dati semplici, come stringhe, così come tipi di dati più complicati, come oggetti Java.

Pre-requisiti:

Per utilizzare Firebase Realtime Database in Android, è necessario disporre di un progetto Android Studio per la creazione dell’app Android. Oltre a ciò, abbiamo bisogno di un progetto Firebase per connettere il database in tempo reale di Firebase all’app Android.

Per creare un nuovo progetto Firebase, segui i passaggi indicati di seguito:- �

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

2. Quindi fare clic su “Aggiungi progetto“.

3.�Quindi, inserisci il nome del progetto Firebase e accetta le condizioni. Successivamente, procedi facendo clic su “ContinuaPulsante “.

4.�Quindi, nella schermata di benvenuto successiva, fare clic su “Aggiungi Firebase alla tua app Android“. Allo stesso modo, inserisci il nome del pacchetto e fai clic su Avanti.

5. Ora scarica il file google-services.json sul tuo sistema locale. Quindi, copia questo file nella posizione nel progetto Android Studio come specificato.

6. Segui il piccolo processo nel passaggio successivo per aggiungere 3 righe di codice alla build. File Gradle a livello di progetto e di app.

7.�Quindi, completa l’aggiunta dell’app Android al progetto Firebase.

8. Aprire la sezione Database cliccando su “Banca Dati” opzione nel menu a sinistra. Quindi, fai clic su “Crea Database“link.

9. Ora il processo di creazione del progetto Firebase è terminato.

Raccomandato Leggi:ï ¿½Come recuperare i dati da Firebase in Android?

Aggiungi la riga seguente nella build a livello di app. gradle per aggiungere la libreria per iniziare a utilizzare il database in tempo reale di Firebase.

implementazione 'com.google.firebase:firebase-database:16.0.6'

Implementazione del codice

Prima di procedere oltre, cerchiamo di capire cos’è un riferimento Firebase? Nel database di Firebase, i dati vengono archiviati in una posizione. Quindi, il puntatore a quella posizione è noto come riferimento Firebase. Più riferimenti puntano alla stessa posizione se vengono avviati con lo stesso percorso.

Crea un’istanza di Firebase Database scrivendo la seguente riga di codice:

privato FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

Ora crea i riferimenti dei percorsi in cui i dati sarebbero archiviati nel database in tempo reale. Poiché i dati sono archiviati nel formato JSON nel database Firebase, i percorsi specificati nei riferimenti sono le chiavi dell’oggetto JSON.

Raccomandato Leggi:ï ¿½Come recuperare i dati da Firebase in Swift Language (iOS)?

È necessario aggiungere la seguente riga di codice per creare un riferimento al nodo radice nel database:

privato DatabaseReference mDatabaseReference = mDatabase.getReference();

Quindi, crea un figlio sotto il nodo radice nel database e usa questa chiave figlio per aggiungere i dati corrispondenti. Successivamente, è possibile aggiungere una stringa al database seguendo le righe di codice sotto indicate:

mDatabaseReference = mDatabase.getReference().child("nome"); mDatabaseReference.setValue ("Paperino");

Le righe di codice precedenti inserirebbero i dati nel database. Il database nel progetto Firebase avrà il seguente aspetto:

Il database Firebase Realtime supporta anche il salvataggio di oggetti Java complessi. Quindi, è necessario creare prima una classe modello per salvare gli oggetti Java. Inoltre, assicurati di aggiungere un costruttore vuoto e i getter di ogni attributo nella classe.

Di seguito è riportato il codice per una classe modello demo:

Di seguito è riportato il codice per salvare un oggetto di questa classe nel database Firebase:

Utente utente = nuovo Utente("Topolino", 18); mDatabaseReference = mDatabase.getReference().child("utente"); mDatabaseReference.setValue(utente);

Il suddetto codice inserirebbe i dati dell’oggetto nel database di Firebase come segue:

Raccomandato Leggi:ï ¿½Come salvare i dati su Firebase in Swift Language (iOS)?

Conclusione:

Ora sai come salvare i dati nel database in tempo reale di Firebase. Inoltre, Knowband offre un modulo eCommerce Mobile App Builder per i proprietari di negozi online. Quindi, il plug-in Maker dell’app mobile è disponibile per piattaforme come PrestaShop, OpenCart, WooCommerce e Magento 2. Quindi, con pochi clic e nessuna difficoltà, puoi creare la tua app nativa e reattiva per smartphone e tablet.

Come recuperare i dati da Firebase in Android?

Obiettivi del blog

Dopo aver letto questo blog saremo in grado di recuperare i dati dal database in tempo reale di Firebase. Questi dati possono includere tipi di dati semplici, come stringhe, o tipi di dati complessi come oggetti Java.

Pre-requisiti

È necessario disporre di un progetto Android Studio e di un progetto Firebase pronti per utilizzare Firebase Realtime Database. Crea un nuovo progetto Android Studio (o usa qualsiasi progetto esistente). Questo progetto Android Studio verrà utilizzato per lavorare con il database in tempo reale. Segui i passaggi indicati di seguito per creare il progetto Firebase –

1. Vai su https://console.firebase.google.com

2. Clicca su “Aggiungi progettoPulsante “.

3. Inserisci il nome del progetto e accetta le condizioni e clicca su “ContinuaPulsante “.

 

4. Quindi aggiungi l’app Android al tuo progetto. Richiede l’inserimento del nome del pacchetto dell’app. Fare clic su Avanti.

5. Scarica il file google-services.json e sposta questo file nella posizione del progetto Android in Android Studio come specificato sullo schermo.

6. Nel passaggio successivo, ci sarebbe un piccolo tutorial per aggiungere 3 righe di codice nei file build.gradle a livello di progetto e di app. Aggiungili di conseguenza.

7. Quindi completa questo processo di aggiunta dell’app Android al progetto.

8. Quindi fare clic sull’opzione “Database” dal menu a sinistra e fare clic sul pulsante “Crea database”.

 

ï ¿½

9. La configurazione di Firebase è completata Ora aggiungi la libreria Firebase per l’utilizzo del database Firebase Realtime nel file build.gradle a livello di app. Questo può essere fatto aggiungendo la seguente riga:

implementazione 'com.google.firebase:firebase-database:16.0.6'

Implementazione del codice

Prima di recuperare i riferimenti, dovrai capire che cos’è un riferimento Firebase. Un riferimento Firebase punta a una posizione nel database Firebase in cui sono archiviati i dati. Anche se crei più riferimenti, condividono tutti la stessa connessione a condizione che tu abbia utilizzato lo stesso percorso durante la creazione del riferimento dall’istanza del database. In primo luogo, per poterlo utilizzare, è necessario disporre di un’istanza del database Firebase. L’istanza può essere creata dalla seguente riga di codice.

 

privato FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

 

Ora è necessario creare riferimenti dei percorsi in cui i dati sono archiviati nel database. Poiché i dati nel database Firebase sono archiviati nel formato JSON, le chiavi dell’oggetto JSON sono i percorsi specificati nei riferimenti. Il riferimento al nodo radice può essere creato dalla seguente riga di codice:

 

privato DatabaseReference mGetReference = mDatabase.getReference();

 

Dopo aver ottenuto il riferimento del database, è necessario collegare un listener asincrono al riferimento del database che ascolta attivamente qualsiasi modifica apportata al database. Questo listener restituisce inizialmente uno snapshot dei dati del database per la prima volta quando è collegato. Quindi lo snapshot dei dati viene restituito quando viene apportata una modifica al percorso a cui punta il riferimento al database. Di solito, il database contiene lo stesso tipo di dati, ma supponiamo che il database contenga dati di tipo diverso. Di seguito trovi lo screenshot del database contenente alcuni dati fittizi:

 

Per recuperare il database da questo database, allegare ValueEventListener al riferimento del database. L’ascoltatore può essere aggiunto dal seguente codice:

 

mGetReference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if (dataSnapshot.exists()){ HashMap dataMap = (HashMap ) dataSnapshot.getValue(); for (Chiave stringa: dataMap.keySet()){ Dati oggetto = dataMap.get(chiave); prova{ HashMap userData = (HashMap ) dati; Utente mUser = new User((String) userData.get("name"), (int) (long) userData.get("age")); addTextToView(mUser.getName() + " - " + Integer.toString(mUser.getAge())); }catch (ClassCastException cce){ // Se non è possibile eseguire il cast dell'oggetto in HashMap, significa che è di tipo String. try{ String mString = String.valueOf(dataMap.get(chiave)); addTextToView(mString); }catch (ClassCastException cce2){ } } } } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } });

Dopo aver collegato il listener, viene eseguito inizialmente restituendo tutti i dati nel database in quel momento. Questo listener verrà successivamente richiamato nel momento in cui si verifica qualsiasi modifica nel database nel percorso indicato dal riferimento a cui è collegato il listener.

sommario

Dopo aver seguito la procedura sopra, sarai in grado di recuperare i dati dal database Firebase Realtime in Android. In caso di problemi, non esitare a contattarci all’indirizzo support@knowband.com. Forniamo anche sviluppo personalizzato e moduli per le principali piattaforme CMS come Prestashop, Opencart, Magento, Magento 2 e Woocommerce. Dai un’occhiata ai nostri più popolari Generatore di app mobili senza codice Woocommerce:

 

Inserisci elementi in modalità lineare e nella parte inferiore dello schermo in Android

Il modo migliore per inserire qualsiasi elemento in modo lineare in Android è utilizzare LinearLayout. Specifica l'attributo 'orientamento'del LinearLayout a'verticale‘.

Ora qualsiasi numero di elementi inseriti all'interno di LinearLayout sarà in ordine verticale.

Per allineare gli elementi nella parte inferiore dello schermo, utilizzare ConstraintLayout e aggiungere vincoli al LinearLayout per collegarlo alla parte inferiore dello schermo.

Trova il codice di esempio qui sotto dove ci sono due TextView posizionati uno sotto l'altro e il contenitore LinearLayout è attaccato alla parte inferiore dello schermo.

<? 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 = strumenti "match_parent": context = ". MainActivity"> <LinearLayout android: layout_width = "match_parent" android: layout_height = "wrap_content" android: orientation = "vertical" app: layout_constraintBottom_toBottomOf = app "parent": layout_constraintEnd_toEndOf = app "parent": layout_constraintStart_toStartOf = "parent "> <TextView android: id =" @ + id / element1 "android: layout_width =" wrap_content "android: layout_height =" wrap_content "android: text =" Questo è l'elemento 1 "/> <TextView android: id =" @ + id / element2 "android: layout_width =" match_parent "android: layout_height =" wrap_content "android: text =" Questo è l'elemento 2 "/> </ LinearLayout> </android.support.constraint.ConstraintLayout>

Come creare una finestra di dialogo di avviso in Android?

La finestra di dialogo di avviso può essere utilizzata per visualizzare un messaggio in una finestra di dialogo popup o visualizzare un campo di testo per l'input dell'utente o mostrare qualsiasi visualizzazione personalizzata nella finestra di dialogo.

Affinché la vista venga visualizzata nella finestra di dialogo popup, la vista deve essere creata a livello di programmazione o tramite XML. Quindi la vista deve essere impostata nella finestra di dialogo in modo che questa vista sia visibile all'utente nella finestra di dialogo.

Trova i passaggi seguenti per creare una finestra di dialogo in cui ci sarà un campo per l'input dell'utente.

1. Creare una vista da visualizzare nella finestra di dialogo.

EditText finale userInput = new EditText (this);

2. Creazione e visualizzazione di una finestra di dialogo.

new AlertDialog.Builder (this) .setTitle ("Titolo della finestra di dialogo va qui") .setView (userInput) .setPositiveButton ("Submit", new DialogInterface.OnClickListener () {@Override public void onClick (DialogInterface dialog, int quale ) {// Gestisci la tua azione qui quando viene cliccato il pulsante "Invia"}}). SetNegativeButton ("Annulla", nuovo DialogInterface.OnClickListener () {@Override public void onClick (DialogInterface dialog, int which) {// Gestisci la tua azione qui quando si fa clic sul pulsante "Annulla"}}) .show ();