Créer KeyStore et signer apk en cours de traitement (mode Android) (java peut être utilisé avec quelques modifications)

Objectif

Signer avec traitement Peut-être qu'il peut être utilisé pour créer des IDE (bien que les personnes qui créent des IDE puissent le faire sans le regarder ...) library Veuillez installer ZipSigner et Spongy Castle import

import java.security.KeyStore;
import java.io.*; 
import android.os.Environment;
import javax.crypto.SecretKey;
import javax.crypto.KeyGenerator;
import kellinwood.security.zipsigner.ZipSigner;
import java.io.InputStream;
import kellinwood.security.zipsigner.optional.CustomKeySigner;
import org.spongycastle.jce.provider.BouncyCastleProvider;
import java.net.*;

Autorité

Si traitement

if (!hasPermission("android.permission.WRITE_EXTERNAL_STORAGE"))requestPermission("android.permission.WRITE_EXTERNAL_STORAGE", "initLocation");

Peut être fait avec S'il s'agit de java, veuillez ajouter WRITE_EXTERNAL_STORAGE sans autorisation

Création d'un keystore

KeyStore ks;
void createKey(String keyName,String keyPassword,String Alias,String AliasPassword){
  try{
    String directory=Environment.getExternalStorageDirectory()+"/"+keyName+"."+KeyStore.getDefaultType();
    ks = KeyStore.getInstance(KeyStore.getDefaultType());
    ks.load(null, keyPassword.toCharArray());
    KeyGenerator keyGen = KeyGenerator.getInstance("AES");
    keyGen.init(128);
    SecretKey mySecretKey=keyGen.generateKey();
    KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(mySecretKey); 
    ks.setEntry(Alias, skEntry, new KeyStore.PasswordProtection(AliasPassword.toCharArray()));
    File file=new File(directory);
    FileOutputStream fos = new FileOutputStream(file);
    ks.store(fos, keyPassword.toCharArray());
  }catch(Exception e){
    e.printStackTrace();
  }
}

Sortir

Signature

void sign(String keystore,String keystorePassword,String keyAlias,String StringkeyAliasPassword,String inFilename,String outputFilename){
  try {
    ZipSigner signer = new ZipSigner();
    CustomKeySigner.signZip(signer, keystore, keystorePassword.toCharArray(), keyAlias, keyAliasPassword.toCharArray(), "SHA1WITHRSA", inFilename, outputFilename);
  }catch (Exception e) {
     e.printStackTrace();
  }
}

Sortir

Épilogue

Cela a pris beaucoup de temps car il y avait peu d'explications en japonais, mais le travail en lui-même était simple.

Recommended Posts

Créer KeyStore et signer apk en cours de traitement (mode Android) (java peut être utilisé avec quelques modifications)
[Android / Java] Transition d'écran et traitement de retour par fragments
Syntaxe et conditions d'occurrence d'exception pouvant être utilisées lors de la comparaison avec null en Java
[Java 8] Méthode de tri par ordre alphabétique et par ordre de longueur de chaîne de caractères pouvant être utilisée dans les tests de codage
Résumé de l'ORM "uroboroSQL" qui peut être utilisé dans le Java d'entreprise