Xipher - это кураторская коллекция криптографических примитивов, созданных для выполнения асимметричного шифрования на основе ключей/пароля.
Загрузите последнюю страницу бинарника со страницы релизов и добавьте ее на свой путь.
Xipher может быть установлен с помощью Brew, используя следующую команду на MacOS
brew install shibme/tap/xipherС оболочкой (macos/linux):
curl -fsSL https://dev.shib.me/xipher/install/install.sh | shС PowerShell (Windows):
irm https: // dev.shib.me / xipher / install / install.ps1 | iexС оболочкой (macos/linux):
curl -fsSL https://dev.shib.me/xipher/install/install.sh | sh -s v1.1.0С PowerShell (Windows):
$v = " 1.1.0 " ; irm https: // dev.shib.me / xipher / install / install.ps1 | iexВы также можете запустить Xipher без установки с помощью Docker:
docker run --rm -v $PWD :/data -it shibme/xipher help Веб -интерфейс, совместимый с CLI, реализованный с использованием веб -сборки, доступен здесь.
Следующая диаграмма последовательности иллюстрирует рабочий процесс веб -приложения.
секвенированная
Участник rx как xipher <br> (в браузере)
Актер -приемник
Актер отправитель
Участник SX как Xipher <br> (в браузере)
Приемник->>+rx: открывает приложение Xipher в браузере
RX->> RX: генерирует пару ключей и хранит их в локальном хранилище браузера
RX->>-приемник: возвращает открытый ключ <br> (как URL-адрес, который можно обмениваться)
Приемник->>+отправитель: разделяет URL шифрования <br> (это содержит открытый ключ как параметр)
Sender->>+SX: открывает URL публичного шифрования <br> (открывает веб-страницу шифрования Xipher))
Отправитель->> SX: вводит данные, которые необходимо зашифровать
SX->> SX: шифрует данные, используя открытый ключ из URL-адреса
SX->>-Sender: возвращает зашифрованный в Ciphertex
Sender->>-приемник: отправляет зашифрованный зашифрованный текст в приемник
Приемник->>+rx: вводит зашифрованный текст <br> (на странице децирпции)
RX->> RX: расшифровывает зашифрованный текст <br> (используя секретный ключ из локального хранилища)
RX->>-приемник: возвращает расшифрованные данные
Установите пакет
go get -u dev.shib.me/xipherИспользуйте его в своем коде
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 ))
}Чтобы использовать Xipher в качестве модуля веб -сборки (WASM) в приложении браузера, следуйте примеру ниже.
< 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 использует следующие алгоритмы и библиотеки для достижения своей функциональности:
Следующая диаграмма последовательности иллюстрирует рабочий процесс Xipher в данных шифрования с использованием открытого ключа на основе пароля.
секвенированная
Участник RX как Xipher
Актер -приемник
Актер отправитель
Участник SX как Xipher
Получатель->>+rx: вывести публику (пароль ввода)
RX->>-приемник: возвращает открытый ключ
Получатель->> отправитель: общенациональный ключ
Отправитель->>+SX: Data Encrypt с открытым ключом
SX->>-отправитель: возвращает зашифрованный Ciphertex
Sender->> приемник: отправляет зашифрованный зашифрованный текст в приемник
Получатель->>+rx: Decrypt Data (вводы зашифрованный текст и пароль)
RX->>-приемник: возвращает расшифрованные данные
Этот инструмент/библиотека предоставляется без каких -либо гарантий, и нет никакой гарантии его стабильности. Из -за экспериментального характера некоторых из его компонентов ожидается, что в будущем будут сделаны модификации кода, репозитория и API. Предостережение рекомендуется, прежде чем включить это в производственное приложение. Пожалуйста, сообщите о любых выявленных вопросах безопасности незамедлительно. Ваше сотрудничество в уведомлении нас о таких проблемах высоко ценится.