xipher
v1.8.0
Xipher是一组策划的加密原语集合,以执行基于密钥/密码的非对称加密。
从“发行版”页面下载最新的二进制文件,然后将其添加到您的路径中。
Xipher可以使用MacOS上的以下命令与Brew一起安装
brew install shibme/tap/xipher使用Shell(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使用Shell(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您也可以在不使用Docker安装的情况下运行Xipher:
docker run --rm -v $PWD :/data -it shibme/xipher help 使用Web组件实施的与CLI互动的Web接口可在此处使用。
以下序列图说明了Web应用程序的工作流程。
测序图
参与者RX为Xipher <br>(在浏览器上)
演员接收者
演员发送者
参与者SX作为Xipher <br>(在浏览器上)
接收器 - >>+rx:在浏览器上打开Xipher应用程序
RX- >> RX:生成一个键对,并将它们存储在浏览器本地存储中
RX - >> - 接收器:返回公共密钥<br>(作为可以共享的URL)
接收器 - >>+发件人:共享加密URL <br>(这包含公共密钥作为参数)
发件人 - >>+sx:打开公共加密URL <br>(打开Xipher加密网页)
发件人 - >> SX:输入需要加密的数据
SX- >> SX:使用URL的公共密钥对数据进行加密
SX - >> - 发件人:返回使用公共密钥加密的Ciphertext
发件人 - >> - 接收器:将加密的密文发送到接收者
接收器 - >>+rx:输入Ciphertext <br>(在“ 9月”页面中)
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作为Web组件(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:使用公钥加密数据
SX - >> - 发件人:返回使用公共密钥加密的密文
发件人 - >>接收器:将加密的密文发送到接收者
接收器 - >>+rx:解密数据(输入密文和密码)
RX - >> - 接收器:返回解密数据
提供此工具/库无需任何保证,也不能保证其稳定性。由于其某些组件的实验性质,预计将来将对代码,存储库和API进行修改。在将其纳入生产应用程序中之前,请谨慎行事。请立即报告任何已确定的安全问题。高度赞赏您在通知我们这类问题方面的合作。