xipher
v1.8.0
Xifherは、キー/パスワードベースの非対称暗号化を実行するためにまとめられた暗号化プリミティブのキュレーションされたコレクションです。
[リリース]ページから最新のバイナリをダウンロードして、パスに追加します。
Xipherは、MacOSの次のコマンドを使用してBrewでインストールできます
brew install shibme/tap/xipherシェル(macos/linux):
curl -fsSL https://dev.shib.me/xipher/install/install.sh | shPowerShell(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.0PowerShell(Windows):
$v = " 1.1.0 " ; irm https: // dev.shib.me / xipher / install / install.ps1 | iexDockerを使用してインストールせずにXipherを実行することもできます。
docker run --rm -v $PWD :/data -it shibme/xipher help Webアセンブリを使用して実装されたCLIと相互運用可能なWebインターフェイスはこちらから入手できます。
次のシーケンス図は、Webアプリのワークフローを示しています。
Sequendediagram
Xifher <br>としての参加者rx(ブラウザ上)
俳優レシーバー
俳優の送信者
Xifher <br>としての参加者SX(ブラウザ上)
受信者 - >>+rx:ブラウザでxipherアプリを開きます
rx- >> rx:キーペアを生成し、ブラウザローカルストレージに保存します
rx- >> - 受信者:公開キーを返します<br>(共有できるURLとして)
受信者 - >>+送信者:暗号化URL <br>を共有します(これにはパラメーターとして公開キーが含まれています)
送信者 - >>+sx:パブリック暗号化url <br>を開き(xipher暗号化Webページを開きます)
送信者 - >> SX:暗号化する必要があるデータを入力します
sx- >> sx:URLの公開キーを使用してデータを暗号化します
sx- >> - 送信者:公開キーで暗号化された暗号文を返します
送信者 - >> - レシーバー:暗号化された暗号文を受信機に送信します
受信者 - >>+rx:ciphertext <br>(脱縮ページ)を入力します
rx - >> rx:ciphertext <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をブラウザアプリでWebアセンブリ(WEB)モジュールとして使用するには、以下の例をフォローしてください。
< 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のワークフローを示しています。
Sequendediagram
参加者rx as xipher
俳優レシーバー
俳優の送信者
Xifherとしての参加者SX
受信者 - >>+rx:public(入力パスワード)を導き出す
rx - >> - 受信者:公開キーを返します
受信者 - >>送信者:公開キーを共有します
送信者 - >>+sx:公開キーでデータを暗号化します
sx- >> - 送信者:公開キーで暗号化された暗号文を返します
送信者 - >>レシーバー:暗号化された暗号文を受信機に送信します
受信者 - >>+rx:データを復号化する(ciphertextとパスワードを入力)
rx - >> - 受信者:復号化されたデータを返します
このツール/ライブラリは保証なしで提供されており、その安定性の保証はありません。一部のコンポーネントの実験的性質により、コード、リポジトリ、およびAPIの変更が将来行われると予想されます。これを生産アプリケーションに組み込む前に、注意を勧めます。特定されたセキュリティの問題を迅速に報告してください。そのような懸念を私たちに通知する際のあなたの協力は非常に高く評価されています。