Xipher est une collection organisée de primitives cryptographiques réunies pour effectuer un cryptage asymétrique basé sur la clé / mot de passe.
Téléchargez le dernier binaire à partir de la page des versions et ajoutez-le à votre chemin.
Xipher peut être installé avec Brew en utilisant la commande suivante sur macOS
brew install shibme/tap/xipherAvec shell (macOS / Linux):
curl -fsSL https://dev.shib.me/xipher/install/install.sh | shAvec PowerShell (Windows):
irm https: // dev.shib.me / xipher / install / install.ps1 | iexAvec shell (macOS / Linux):
curl -fsSL https://dev.shib.me/xipher/install/install.sh | sh -s v1.1.0Avec PowerShell (Windows):
$v = " 1.1.0 " ; irm https: // dev.shib.me / xipher / install / install.ps1 | iexVous pouvez également exécuter Xipher sans installer à l'aide de Docker:
docker run --rm -v $PWD :/data -it shibme/xipher help Une interface Web interopérable avec la CLI, implémentée à l'aide de l'assemblage Web est disponible ici.
Le diagramme de séquence suivant illustre le flux de travail de l'application Web.
séquenchestre
Participant Rx comme Xipher <br> (sur le navigateur)
récepteur acteur
expéditeur acteur
Participant SX comme Xipher <br> (sur le navigateur)
Récepteur - >> + RX: ouvre l'application Xipher sur le navigateur
RX - >> RX: génère une paire de clés et les stocke dans le stockage local Storage
RX - >> - Récepteur: Renvoie la clé publique <br> (en tant qu'URL qui peut être partagée)
Récepteur - >> + expéditeur: partage l'URL de chiffrement <br> (Ceci contient la clé publique en tant que paramètre)
Expéditeur - >> + SX: ouvre l'URL du cryptage public <br> (ouvre la page Web de Xipher Encryption)
Expéditeur - >> SX: saisit les données qui doivent être cryptées
SX - >> SX: crypte les données à l'aide de la clé publique de l'URL
SX - >> - Sender: Renvoie un texte chiffré crypté avec la clé publique
Expéditeur - >> - Récepteur: envoie le texte chiffré crypté au récepteur
Récepteur - >> + RX: Entre le chiffre d'affaires <br> (dans la page de décyrption)
Rx - >> rx: décrypte le texte chiffré <br> (en utilisant la clé secrète du stockage local)
RX - >> - Récepteur: Renvoie des données décryptées
Installer le package
go get -u dev.shib.me/xipherUtilisez-le dans votre code
package main
import (
"encoding/base32"
"fmt"
"dev.shib.me/xipher"
)
func main () {
// Creating a new secret key for password
scrtKey , err := xipher . NewSecretKeyForPassword ([] byte ( "Paws0meKittyKuwan!" ))
if err != nil {
panic ( err )
}
// Deriving public key from secret key
pubKey , err := scrtKey . PublicKey ( false )
if err != nil {
panic ( err )
}
publicKeyBytes , err := pubKey . Bytes ()
if err != nil {
panic ( err )
}
fmt . Println ( "PublicKey:" , base32 . StdEncoding . WithPadding ( base32 . NoPadding ). EncodeToString ( publicKeyBytes ))
platinText := [] byte ( "Hello World!" )
// Encrypting plain text with public key
cipherText , err := pubKey . Encrypt ( platinText , true )
if err != nil {
panic ( err )
}
fmt . Println ( "Encrypted:" , base32 . StdEncoding . WithPadding ( base32 . NoPadding ). EncodeToString ( cipherText ))
// Decrypting cipher text with secret key
plainText , err := scrtKey . Decrypt ( cipherText )
if err != nil {
panic ( err )
}
fmt . Println ( "Decrypted:" , string ( plainText ))
}Pour utiliser Xipher comme module d'assemblage Web (WASM) dans une application de navigateur, suivez l'exemple ci-dessous.
< html >
< head >
< meta charset =" utf-8 " />
< script src =" https://dev.shib.me/xipher/wasm/wasm_exec.js " > </ script >
< script >
const go = new Go ( ) ;
WebAssembly . instantiateStreaming ( fetch ( "https://dev.shib.me/xipher/wasm/xipher.wasm" ) , go . importObject ) . then ( ( result ) => {
go . run ( result . instance ) ;
} ) ;
</ script >
</ head >
< body >
Call wasm methods that begin with xipher. For example: xipherNewSecretKey()
</ body >
</ html > Xipher utilise les algorithmes et les bibliothèques suivants pour réaliser ses fonctionnalités:
Le diagramme de séquence suivant illustre le flux de travail de Xipher dans le chiffrement des données à l'aide d'une clé publique basée sur un mot de passe.
séquenchestre
participant Rx en tant que Xipher
récepteur acteur
expéditeur acteur
participant SX comme Xipher
Récepteur - >> + Rx: dériver le public (mot de passe des entrées)
RX - >> - Récepteur: Renvoie la clé publique
Récepteur - >> Expéditeur: partage la clé publique
Expéditeur - >> + sx: crypter les données avec la clé publique
SX - >> - Sender: Renvoie un texte chiffré crypté avec une clé publique
Expéditeur - >> Récepteur: envoie le texte chiffré crypté au récepteur
Récepteur - >> + Rx: Decrypt Données (entrées CipherText et Mot de passe)
RX - >> - Récepteur: Renvoie des données décryptées
Cet outil / bibliothèque est fourni sans aucune garantie, et il n'y a aucune garantie de sa stabilité. En raison de la nature expérimentale de certains de ses composants, il est prévu que les modifications du code, du référentiel et de l'API seront effectuées à l'avenir. La prudence est avisée avant de l'intégrer dans une application de production. Veuillez signaler rapidement tout problème de sécurité identifié. Votre coopération pour nous informer de ces préoccupations est très appréciée.