Como configurar a criptografia e a descriptografia entre o aplicativo da Web Android e ASP.Net?

Nesta criptografia, vamos usar uma chave secreta para criptografar a string. O algoritmo utilizado será o AES com modo CBC (Cipher Block Chaining).

O código C# usará o preenchimento PKCS7, pois o PKCS5 não está disponível lá. No Android, ele usa o preenchimento PKCS5 internamente, mesmo se especificarmos o preenchimento PKCS7 na transformação de cifra. Portanto, também estamos especificando o modo de preenchimento PKCS5. Quando testados, ambos produzem os mesmos resultados corretos.

Nesse método de criptografia, uma única chave é usada tanto para a chave secreta quanto para o salt.

Ao usar chaves diferentes para a chave secreta e o salt, havia alguma diferença entre as versões codificadas em Base64 do salt (ou vetor de inicialização). As versões codificadas em Base64 foram criadas por códigos Android e C# e eram diferentes umas das outras.

Para superar isso, usamos uma única chave que servirá como chave secreta e sal.

O código para a parte do Android é o seguinte:

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) lança UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { byte [] plainTextbytes = plainText.getBytes(characterEncoding); byte [] keyBytes = getKeyBytes(chave); // return Base64.encodeToString(encrypt(plainTextbytes,keyBytes, keyBytes), Base64.DEFAULT); return Base64.encodeToString(encrypt(plainTextbytes,keyBytes, keyBytes), Base64.NO_WRAP); } public String decrypt(String encodingText, String key) lança KeyException, GeneralSecurityException, GeneralSecurityException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException, IOException { byte [] cipheredBytes = Base64.decode(encryptedText, Base64.DEFAULT); byte[] keyBytes = getKeyBytes(chave); return new String (decrypt(cipheredBytes, keyBytes, keyBytes), characterEncoding); } public byte [] decrypt( byte[] cipherText, byte[] key, byte [] initialVector) lança NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance(cipherTransformation); SecretKeySpec secretKeySpecy = new SecretKeySpec(chave, aesEncryptionAlgorithm); IvParameterSpec ivParameterSpec = new IvParameterSpec(initialVector); cipher.init(Cipher.DECRYPT_MODE, secretKeySpecy, ivParameterSpec); cipherText = cipher.doFinal(cipherText); return texto cifrado; } public byte[] encrypt(byte[] plainText, byte[] key, byte [] initialVector) lança NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance(cipherTransformation); SecretKeySpec secretKeySpec = new SecretKeySpec(chave, aesEncryptionAlgorithm); IvParameterSpec ivParameterSpec = new IvParameterSpec(initialVector); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec); plainText = cipher.doFinal(plainText); retornar texto simples; } private byte[] getKeyBytes(String key) lança UnsupportedEncodingException{ byte [] keyBytes= new byte[16]; byte [] parâmetroKeyBytes= key.getBytes(characterEncoding); System .arraycopy(parameterKeyBytes, 0 , keyBytes, 0, Math.min(parameterKeyBytes.length, keyBytes.length)); return keyBytes; } } Leitura recomendada: Copiar para a área de transferência em JavaScript

O código para a parte C# é o seguinte:

// Criptografa texto simples usando chave AES de 128 bits e uma cifra de bloco de cadeia e retorna uma string codificada em base64 public string Encrypt(String plainText, String key) { var plainBytes = Encoding.UTF8.GetBytes(plainText); return Convert.ToBase64String(Encrypt(plainBytes, GetRijndaelManaged(chave))); } public string Decrypt(String criptografadoTexto, String chave) { var criptografadoBytes = Convert.FromBase64String(encryptedText); return Encoding.UTF8.GetString(Decrypt(encryptedBytes, GetRijndaelManaged(chave))); } public byte[] Encrypt(byte[] plainBytes, RijndaelManaged rijndaelManaged) { return rijndaelManaged.CreateEncryptor() .TransformFinalBlock(plainBytes, 0, plainBytes.Length); } public byte[] Decrypt(byte[] dado criptografado, 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 }; }

Com a ajuda do código acima, pode-se criptografar uma string em uma plataforma e depois descriptografá-la na outra plataforma e vice-versa.

Recomendado Read: Como ver o código do arquivo ‘.ctp’ tão colorido quanto o arquivo ‘.php’ no NetBeans

How to save data to Firebase in Android?

Objetivos:

O objetivo deste blog é informar os leitores sobre como salvar dados no banco de dados Firebase Realtime do Android. Tipos de dados simples, como strings, podem ser gravados nesse banco de dados, bem como tipos de dados mais complicados, como objetos Java.

Pré-Requisitos:

Para usar o Firebase Realtime Database no Android, precisamos ter um projeto do Android Studio para criar o aplicativo Android. Além disso, precisamos de um projeto Firebase para conectar o banco de dados em tempo real do Firebase ao aplicativo Android.

Para criar um novo projeto do Firebase, siga as etapas abaixo mencionadas:- �

1. Abra o URL – https://console.firebase.google.com

2. Em seguida, clique em “Adicionar projeto“.

3.�Em seguida, insira o nome do projeto Firebase e aceite as condições. Depois disso, prossiga clicando no botão “Continuar“Botão.

4.�Em seguida, na próxima tela de boas-vindas, clique em “Adicione o Firebase ao seu aplicativo Android“. Da mesma forma, digite o nome do pacote e clique em Avançar.

5. Agora, baixe o arquivo google-services.json para seu sistema local. Em seguida, copie esse arquivo para o local no projeto do Android Studio conforme especificado.

6. Siga o pequeno processo na próxima etapa para adicionar 3 linhas de código à compilação. Arquivos Gradle no nível do projeto e no nível do aplicativo.

7.�Em seguida, termine de adicionar o aplicativo Android ao projeto Firebase.

8. Abra a seção Banco de Dados clicando no botão “banco de dados” no menu à esquerda. Em seguida, clique no botão “Criar banco de dados” ligação.

9. Agora o processo de criação do projeto Firebase está concluído.

Recomendado Read: Como buscar dados do Firebase no Android?

Adicione a seguinte linha no arquivo build. gradle para adicionar a biblioteca e começar a usar o Firebase Realtime Database.

implementação 'com.google.firebase:firebase-database:16.0.6'

Implementação de Código

Antes de prosseguir, vamos entender o que é uma referência do Firebase? No banco de dados do Firebase, os dados são armazenados em um local. Portanto, o ponteiro para esse local é conhecido como referência do Firebase. Várias referências apontam para o mesmo local se forem iniciadas com o mesmo caminho.

Crie uma instância do Firebase Database escrevendo a seguinte linha de código:

private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

Agora crie referências dos caminhos onde os dados seriam armazenados no Realtime Database. Como os dados são armazenados no formato JSON no banco de dados Firebase, os caminhos especificados nas referências são as chaves do objeto JSON.

Recomendado Read: Como buscar dados do Firebase no Swift Language (iOS)?

A seguinte linha de código deve ser adicionada para criar uma referência ao nó raiz no banco de dados:

private DatabaseReference mDatabaseReference = mDatabase.getReference();

Em seguida, crie um filho sob o nó raiz no banco de dados e use essa chave filho para adicionar os dados correspondentes. Depois disso, uma string pode ser adicionada ao banco de dados seguindo as linhas de código abaixo mencionadas:

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

As linhas de código acima inseririam os dados no banco de dados. O banco de dados no projeto Firebase terá a seguinte aparência:

O banco de dados Firebase Realtime também oferece suporte ao salvamento de objetos Java complexos. Portanto, uma classe de modelo precisa ser criada primeiro para salvar os objetos Java. Além disso, certifique-se de adicionar um construtor vazio e os getters de cada atributo na classe.

A seguir está o código para uma classe de modelo de demonstração:

Segue o código para salvar um objeto desta classe no banco de dados Firebase:

User user = new User("Mickey", 18); mDatabaseReference = mDatabase.getReference().child("user"); mDatabaseReference.setValue(usuário);

O código mencionado acima inseriria os dados do objeto no banco de dados do Firebase da seguinte forma:

Recomendado Read: Como salvar dados no Firebase em Swift Language (iOS)?

Conclusão:

Agora você sabe como salvar dados no Firebase Realtime Database. Além disso, a Knowband oferece um módulo eCommerce Mobile App Builder para proprietários de lojas online. Assim, o plug-in Maker de aplicativo móvel está disponível para plataformas como PrestaShop, OpenCart, WooCommerce e Magento 2. Assim, com apenas alguns cliques e sem dificuldade, você pode criar seu aplicativo nativo e responsivo para smartphones e tablets.

Como buscar dados do Firebase no Android?

Objetivos do blog

Depois de ler este blog, poderemos buscar dados do Firebase Realtime Database. Esses dados podem incluir tipos de dados simples, como Strings, ou tipos de dados complexos, como objetos Java.

Pré-requisitos

Precisamos ter um projeto do Android Studio e um projeto do Firebase prontos para usar o Firebase Realtime Database. Crie um novo projeto do Android Studio (ou use qualquer projeto existente). Este projeto do Android Studio será usado para trabalhar com o banco de dados em tempo real. Siga as etapas abaixo para criar o projeto Firebase –

1. Acesse https://console.firebase.google.com

2. Clique em “Adicionar projeto“Botão.

3. Digite o nome do projeto e aceite as condições e clique em “Continuar“Botão.

 

4. Em seguida, adicione o aplicativo Android ao seu projeto. Requer a inserção do nome do pacote do aplicativo. Clique em Avançar.

5. Faça o download do arquivo google-services.json e mova esse arquivo para o local no projeto Android no Android Studio conforme especificado na tela.

6. Na próxima etapa, haveria um pequeno tutorial para adicionar 3 linhas de código nos arquivos build.gradle no nível do projeto e no nível do aplicativo. Adicione-os de acordo.

7. Em seguida, termine este processo de adicionar o aplicativo Android ao projeto.

8. Em seguida, clique na opção “Banco de dados” no menu à esquerda e clique no botão “Criar banco de dados”.

 

9. A configuração do Firebase foi concluída Agora, adicione a biblioteca do Firebase para usar o Firebase Realtime Database no arquivo build.gradle no nível do aplicativo. Isso pode ser feito adicionando a seguinte linha:

implementação 'com.google.firebase:firebase-database:16.0.6'

Implementação de Código

Antes de buscar as referências, você terá que entender o que é uma referência do Firebase. Uma referência do Firebase aponta para um local no Firebase Database onde os dados são armazenados. Mesmo que você crie várias referências, todas elas compartilham a mesma conexão, desde que você tenha usado o mesmo caminho ao criar a referência da instância do banco de dados. Em primeiro lugar, precisamos ter uma instância do Firebase Database para usá-lo. A instância pode ser criada pela seguinte linha de código.

 

private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

 

Agora é necessário criar referências dos caminhos onde os dados são armazenados no banco de dados. Como os dados do banco de dados do Firebase são armazenados no formato JSON, as chaves do objeto JSON são os caminhos especificados nas referências. A referência ao nó raiz pode ser criada pela seguinte linha de código:

 

private DatabaseReference mGetReference = mDatabase.getReference();

 

Depois de obter a referência do banco de dados, um ouvinte assíncrono deve ser anexado à referência do banco de dados que ouve ativamente qualquer alteração feita no banco de dados. Esse ouvinte retorna um instantâneo de dados do banco de dados inicialmente pela primeira vez quando é anexado. Em seguida, o instantâneo de dados é retornado quando qualquer alteração é feita no caminho para o qual a referência do banco de dados está apontando. Normalmente, o banco de dados contém o mesmo tipo de dados, mas suponha que o banco de dados contenha alguns dados de tipos diferentes. Abaixo, encontre a captura de tela do banco de dados contendo alguns dados fictícios:

 

Para buscar o banco de dados desse banco de dados, anexe o ValueEventListener à referência do banco de dados. O listener pode ser adicionado pelo seguinte código:

 

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); tente { HashMap userData = (HashMap ) dados; User mUser = new User((String) userData.get("name"), (int) (long) userData.get("age")); addTextToView(mUser.getName() + " - " + Integer.toString(mUser.getAge())); }catch (ClassCastException cce){ // Se o objeto não puder ser convertido em HashMap, significa que é do tipo String. try{ String mString = String.valueOf(dataMap.get(key)); addTextToView(mString); }catch (ClassCastException cce2){ } } } } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } });

Após anexar o listener, ele é executado inicialmente retornando todos os dados do banco de dados naquele momento. Este ouvinte será invocado posteriormente no momento em que ocorrer qualquer alteração no banco de dados no caminho apontado pela referência à qual o ouvinte está anexado.

Resumo

Após seguir o procedimento acima, você poderá buscar dados do banco de dados Firebase Realtime no Android. Se você enfrentar algum problema, sinta-se à vontade para nos contatar em support@knowband.com.� Também fornecemos desenvolvimento e módulos personalizados para as principais plataformas CMS, como Prestashop, Opencart, Magento, Magento 2 e Woocommerce. Dê uma olhada em nossos mais populares Construtor de aplicativos móveis sem código Woocommerce:

 

Coloque elementos na moda linear e na parte inferior da tela no Android

A melhor maneira de colocar qualquer elemento de forma linear no Android é usar o LinearLayout. Especifique o atributo 'orientação'do LinearLayout para'vertical‘.

Agora, qualquer número de elementos colocados dentro do LinearLayout estará na ordem vertical.

Para alinhar os elementos na parte inferior da tela, use o ConstraintLayout e adicione restrições ao LinearLayout para anexá-lo à parte inferior da tela.

Encontre o código de exemplo abaixo, onde há dois TextView (s) colocados um abaixo do outro eo recipiente LinearLayout é anexado à parte inferior da tela.

<? xml version = "1.0" codificação = "utf-8"?> <android.support.constraint.ConstraintLayout xmlns: android = "https://schemas.android.com/apk/res/android" xmlns: app = "https://schemas.android.com/apk/res-auto" ferramentas xmlns: tools = "https://schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height = "match_parent": context = ". MainActivity"> <LinearLayout android: layout_width = "match_parent" android: layout_height = "wrap_content" android: orientação = "vertical" app: layout_constraintBottom_toBottomOf = aplicativo "pai": layout_constraintEnd_toEndOf = aplicativo "pai": layout_constraintStart_toStartOf = "pai "> <TextView android: id =" @ + id / element1 "android: layout_width =" wrap_content "android: layout_height =" wrap_content "android: text =" Este é o elemento 1 "/> <TextView android: id =" @ + id / element2 "android: layout_width =" match_parent "android: layout_height =" wrap_content "android: text =" Este é o elemento 2 "/> </ LinearLayout> </android.support.constraint.ConstraintLayout>

Como criar caixa de diálogo de alerta no Android?

A caixa de diálogo de alerta pode ser usada para exibir uma mensagem em uma caixa de diálogo pop-up ou exibir um campo de texto para entrada do usuário ou mostrar qualquer visualização personalizada na caixa de diálogo.

Para que a exibição seja exibida no diálogo pop-up, a visualização deve ser criada programaticamente ou via XML. Em seguida, a visualização deve ser definida na caixa de diálogo para que essa exibição fique visível para o usuário na caixa de diálogo.

Encontre as etapas abaixo para criar uma caixa de diálogo na qual haverá um campo para entrada do usuário.

1. Crie uma visão para ser exibida na caixa de diálogo.

final EditText userInput = new EditText (este);

2. Criando e exibindo uma caixa de diálogo.

new AlertDialog.Builder (this) .setTitle ("Título da caixa de diálogo vai aqui") .setView (userInput) .setPositiveButton ("Enviar", novo DialogInterface.OnClickListener () {@Override public void onClick (diálogo DialogInterface, int que ) {// Lidar com sua ação aqui quando o botão "Enviar" for clicado}}) .setNegativeButton ("Cancelar", novo DialogInterface.OnClickListener () {@Override public void onClick (diálogo DialogInterface, int which) {// Lidar com sua ação aqui quando o botão "Cancelar" é clicado}}) .show ();