Xipher adalah kumpulan primitif kriptografi yang dikuratori untuk melakukan enkripsi asimetris berbasis kunci/kata sandi.
Unduh biner terbaru dari halaman rilis dan tambahkan ke jalur Anda.
Xipher dapat diinstal dengan minuman menggunakan perintah berikut di macOS
brew install shibme/tap/xipherDengan shell (macos/linux):
curl -fsSL https://dev.shib.me/xipher/install/install.sh | shDengan PowerShell (Windows):
irm https: // dev.shib.me / xipher / install / install.ps1 | iexDengan shell (macos/linux):
curl -fsSL https://dev.shib.me/xipher/install/install.sh | sh -s v1.1.0Dengan PowerShell (Windows):
$v = " 1.1.0 " ; irm https: // dev.shib.me / xipher / install / install.ps1 | iexAnda juga dapat menjalankan Xipher tanpa menginstal menggunakan Docker:
docker run --rm -v $PWD :/data -it shibme/xipher help Antarmuka web yang dapat dioperasikan dengan CLI, diimplementasikan menggunakan perakitan web tersedia di sini.
Diagram urutan berikut menggambarkan alur kerja aplikasi web.
Sequencediagram
Peserta RX sebagai xipher <br> (di browser)
Penerima Aktor
pengirim aktor
Peserta SX sebagai xipher <br> (di browser)
Penerima->>+RX: Membuka aplikasi Xipher di browser
Rx->> rx: menghasilkan pasangan kunci dan menyimpannya di browser lokal penyimpanan
Rx->>-penerima: Mengembalikan kunci publik <br> (sebagai url yang dapat dibagikan)
Penerima->>+Pengirim: Berbagi URL enkripsi <br> (ini berisi kunci publik sebagai parameter)
Pengirim->>+SX: Membuka URL Enkripsi Publik <br> (membuka halaman web enkripsi Xipher)
Pengirim->> SX: Masukkan data yang perlu dienkripsi
SX->> SX: Mengenkripsi data menggunakan kunci publik dari URL
SX->>-Pengirim: Mengembalikan ciphertext dienkripsi dengan kunci publik
Pengirim->>-Penerima: Mengirim ciphertext terenkripsi ke penerima
Penerima->>+rx: Masukkan ciphertext <br> (di halaman dekir))
Rx->> rx: mendekripsi ciphertext <br> (menggunakan kunci rahasia dari penyimpanan lokal)
RX->>-Penerima: Mengembalikan data yang didekripsi
Instal paket
go get -u dev.shib.me/xipherGunakan di kode Anda
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 ))
}Untuk menggunakan Xipher sebagai modul perakitan web (WASM) di aplikasi browser, ikuti contoh di bawah ini.
< 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 menggunakan algoritma dan perpustakaan berikut untuk mencapai fungsinya:
Diagram urutan berikut menggambarkan alur kerja Xipher dalam enkripsi data menggunakan kunci publik berbasis kata sandi.
Sequencediagram
peserta rx sebagai xipher
Penerima Aktor
pengirim aktor
peserta sx sebagai xipher
Penerima->>+RX: Turunkan publik (kata sandi input)
RX->>-Penerima: Mengembalikan kunci publik
Penerima->> Pengirim: Membagikan Kunci Publik
Pengirim->>+SX: Mengenkripsi data dengan kunci publik
SX->>-Pengirim: Mengembalikan ciphertext dienkripsi dengan kunci publik
Pengirim->> Penerima: Mengirim ciphertext terenkripsi ke penerima
Penerima->>+RX: Dekripsi Data (input ciphertext dan password)
RX->>-Penerima: Mengembalikan data yang didekripsi
Alat/perpustakaan ini disediakan tanpa jaminan, dan tidak ada jaminan stabilitasnya. Karena sifat eksperimental dari beberapa komponennya, diantisipasi bahwa modifikasi pada kode, repositori, dan API akan dibuat di masa depan. Perhatian disarankan sebelum memasukkan ini ke dalam aplikasi produksi. Harap segera laporkan masalah keamanan yang diidentifikasi. Kerja sama Anda dalam memberi tahu kami tentang kekhawatiran semacam itu sangat dihargai.