Erstelle KeyStore und signiere apk in der Verarbeitung (Android-Modus) (Java kann mit einigen Änderungen verwendet werden)

Zweck

Mit Bearbeitung unterschreiben Vielleicht kann es zum Erstellen von IDEs verwendet werden (obwohl Leute, die IDEs erstellen, es schaffen können, ohne es anzusehen ...) library Bitte installieren Sie ZipSigner und 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.*;

Behörde

Bei Verarbeitung

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

Kann mit gemacht werden Wenn es sich um Java handelt, fügen Sie bitte WRITE_EXTERNAL_STORAGE ohne Erlaubnis hinzu

Erstellen eines Keystores

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();
  }
}

Hinausgehen

Unterschrift

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();
  }
}

Hinausgehen

Nachwort

Es hat viel Zeit gekostet, weil es auf Japanisch nur wenige Erklärungen gab, aber die Arbeit selbst war einfach.

Recommended Posts

Erstelle KeyStore und signiere apk in der Verarbeitung (Android-Modus) (Java kann mit einigen Änderungen verwendet werden)
[Android / Java] Bildschirmübergang und Rückgabeverarbeitung in Fragmenten
Syntax- und Ausnahmebedingungen, die beim Vergleich mit null in Java verwendet werden können
[Java 8] Sortiermethode in alphabetischer Reihenfolge und Reihenfolge der Zeichenkettenlänge, die für Codierungstests verwendet werden kann
Zusammenfassung von ORM "uroboroSQL", das in Enterprise Java verwendet werden kann