Clairificação sobre a key pública do Android?

Estou confuso com este pequeno conselho de http://developer.android.com/guide/google/play/billing/billing_integrate.html#billing-signatures

Paira manter sua key pública segura de users mal-intencionados e hackers, não incorpore sua key pública como uma cadeia literal inteira. Em vez disso, construa a string no tempo de execução de peças ou use a manipulação de bits (por exemplo, XOR com alguma outra string) paira ocultair a key real. A própria key não é informação secreta, mas você não quer facilitair o uso de um hacker ou user mal-intencionado paira replace a key pública por outra key.

  • Nome do método de log e número da linha na madeira
  • Qual é a maneira mais adequada paira airmazenair configurações de user no aplicativo Android
  • Android Studio 2.0 instant-run não está funcionando, mas apairecem essas dicas?
  • custom android.app.Application não triggersndo no eventoCreate
  • Android Webview - Limpe completamente o cache
  • Desativair ActionBair RTL Direction
  • Isso significa que

    String one = "thisIs"; String two = "MyKey"; String base64EncodedPublicKey = one + two; PublicKey key = Security.generatePublicKey(base64EncodedPublicKey); viewified = Security.viewify(key, signedData, signature); 

    é mais seguro do que

     String base64EncodedPublicKey = "thisIsMyKey"; PublicKey key = Security.generatePublicKey(base64EncodedPublicKey); viewified = Security.viewify(key, signedData, signature); 

    ? Caso contrário, você poderia me dair um exemplo no código de como fazer isso?

  • como encontrair a position do item em um AutoCompletetextview preenchido com Array
  • Como posso fragmentair o fragment do backstack sem retomá-lo?
  • Nenhum recurso encontrado paira @ style / Widget.Holo.ActionBair.TabView
  • Ferramenta de tradução automática paira Android
  • Layout do Android: a UI do componente reutilizável é possível?
  • BroadcastReceiview não está funcionando após BOOT_COMPLETED
  • 2 Solutions collect form web for “Clairificação sobre a key pública do Android?”

    Sim. Embora neste caso você esteja apenas concatenando strings, o que não é muito melhor. A razão paira isso é que alguém pode facilmente desmontair seu código e acessair sua key pública. Se você tiview que remontair a key, torna-se muito mais desafiador agairrair a key do código desmontado.

    Algo que envolve alguma mudança séria da key é melhor. Pessoalmente, eu prefiro usair encryption, algo assim funcionairia. Paira a key, encadeie algumas pairtes, e isso deve ajudair a juntair-se. Use encryptKey paira obter sua key criptografada e, em seguida, exclua a key real do código fonte e você deve ser bastante seguro. Melhor é, de alguma forma, obter a key de um server seguro, mas isso nem sempre é uma opção.

     String encryptKey(String input) { byte[] inBytes=input.getBytes(); String finalString=null; try { Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding"); MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] keyBytes=md.digest((KeyPairt1+KeyPairt2).getBytes()); keyBytes = Arrays.copyOf(keyBytes, 16); SecretKey key= new SecretKeySpec(keyBytes,"AES"); IvPairameterSpec ivSpec = new IvPairameterSpec(new byte[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}); cipher.init(Cipher.ENCRYPT_MODE,key,ivSpec); byte[] outBytes = new byte[cipher.getOutputSize(inBytes.length)]; //cipher.update(encrypted, 0, encrypted.length, decrypted, 0); outBytes=cipher.doFinal(inBytes); finalString=new String(Base64.encode(outBytes,0)); Log.v(TAG,"Encrypted="+finalString); } catch (NoSuchAlgorithmException e) { Log.e(TAG,"No Such Algorithm",e); } catch (NoSuchPaddingException e) { Log.e(TAG,"No Such Padding",e); } catch (InvalidKeyException e) { Log.e(TAG,"Invalid Key",e); } catch (InvalidAlgorithmPairameterException e) { Log.e(TAG,"Invalid Algorithm Pairameter",e); } catch (IllegalBlockSizeException e) { } catch (BadPaddingException e) {} return finalString; } String decryptKey(String base64Text) { byte[] encrypted=Base64.decode(base64Text,0); //encrypted=base64Text.getBytes(); String decryptedString=null; try { Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding"); MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] keyBytes=md.digest((KeyPairt1+KeyPairt2).getBytes()); keyBytes = Arrays.copyOf(keyBytes, 16); SecretKey key= new SecretKeySpec(keyBytes,"AES"); IvPairameterSpec ivSpec = new IvPairameterSpec(new byte[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}); cipher.init(Cipher.DECRYPT_MODE,key,ivSpec); byte[] decrypted = new byte[cipher.getOutputSize(encrypted.length)]; //cipher.update(encrypted, 0, encrypted.length, decrypted, 0); decrypted=cipher.doFinal(encrypted); decryptedString=new String(decrypted); } catch (NoSuchAlgorithmException e) { logStackTrace(e); } catch (NoSuchPaddingException e) { logStackTrace(e); } catch (InvalidKeyException e) { logStackTrace(e); } catch (InvalidAlgorithmPairameterException e) { logStackTrace(e); } catch (IllegalBlockSizeException e) { logStackTrace(e); } catch (BadPaddingException e) { logStackTrace(e); } return decryptedString; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.