[JAVA] GitHub comme stockage

introduction

Vous êtes-vous déjà demandé s'il existe un bon service de stockage? Mais n'est-ce pas? Juste là.

:thinking:

Mettez normalement

GitHub a une limite de 100 Mo par fichier, vous ne pourrez donc peut-être pas le faire tel quel. Sans surprise, j'ai essayé de sauvegarder un gros fichier.

Ensuite, vous devriez le diviser!

Je ne veux pas connaître le nom du fichier et je gère également le nom du fichier sous forme de fichier texte.

Et alors, qu'est-il arrivé

Ensuite, vous devez le crypter après l'avoir fractionné! En outre, générer automatiquement une table de correspondance pour les changements de nom de fichier!

C'est pourquoi j'ai créé ceci

Je n'ai écrit aucun type de documentation, mais je pense que ce n'est pas difficile à utiliser. Mettons-le dans JitPack.

Préparation

Créons un dépôt git

cd locked/
git init
git remote add origin https://github.com/nao20010128nao/somewhere-secret.git

Charger le système de fichiers de base

J'écris tout à Kotlin. Veuillez importer dans com.nao20010128nao.Cryptorage. *

//Ouvrir du local
val fs = File("secure/").asFileSource()

//Ouvrir à partir du référentiel GitHub
val fs = URL("https://github.com/nao20010128nao/somewhere-secret/raw/inexistent/").asFileSource()

//Augmenter la mémoire
val fs = newMemoryFileSource()

Vous pouvez maintenant obtenir un système de fichiers spécifique à Cryptorage appelé FileSource.

Ouvrir le stockage crypté

AES-128 est utilisé pour le cryptage. La clé de chiffrement est définitivement dérivée du mot de passe.

//Stockage cryptographique simple(V1)
val cryptorageV1 = fs.withV1Encryption("mot de passe")

//Stockage qui a rendu difficile l'identification même de l'emplacement de la table de correspondance(V2)
val cryptorageV2 = fs.withV2Encryption("mot de passe")

Par souci de simplicité, l'exemple du seul mot de passe est montré, mais uniquement pour V1, Pair <ByteArray, ByteArray> peut être spécifié comme clé AES.

Écrire

L'API de Cryptorage utilise ByteSink / ByteSource de Guava.

//Utiliser l'API ByteSink
cryptorage.put("filename").write("This is a secret string!!!".toByteArray())

//Gérer avec le flux de sortie
val os = cryptorage.put("filename").openStream()
//Opération d'écriture
os.close()

Lis

//Depuis le début
val is = cryptorage.open("filename").openStream()
//Du milieu(Puisqu'il est divisé, le coût est faible même à partir du milieu)
val is = cryptorage.open("filename", offset).openStream()

//Puisqu'il s'agit d'InputStream, il semble facile à manipuler comme vous le souhaitez

Consultez la liste des fichiers

cryptorage.list()// Array<String>

Effacer

cryptorage.delete("filename")

Sauvegarder les modifications

cryptorage.commit()

Nettoyer

Puisque Cryptorage est «Closer», vous pouvez utiliser les utilitaires Closer.

cryptorage.close()

télécharger

git add .
git commit -mChanged
git push

etc

Vous pouvez diviser le fichier comme ceci, le chiffrer et le stocker sur GitHub. Au fait, il semble y avoir une limite à la taille de GitHub par branche, alors faites attention à ne pas la dépasser en coupant la branche de manière appropriée.

Recommended Posts

GitHub comme stockage
Envoyer une pull request à GitHub
Pourquoi le printemps est considéré comme un cadre léger
Utilisez FacesContext comme maquette avec PowerMockito