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> (นี่มีคีย์สาธารณะเป็นพารามิเตอร์)
ผู้ส่ง->>+SX: เปิด URL เข้ารหัสสาธารณะ <br> (เปิดเว็บเพจ Xipher Encryption)
ผู้ส่ง->> SX: ป้อนข้อมูลที่ต้องเข้ารหัส
SX->> SX: เข้ารหัสข้อมูลโดยใช้คีย์สาธารณะจาก URL
SX->>-ผู้ส่ง: ส่งคืน ciphertext ที่เข้ารหัสด้วยคีย์สาธารณะ
ผู้ส่ง->>-ตัวรับสัญญาณ: ส่ง ciphertext ที่เข้ารหัสไปยังผู้รับ
ตัวรับสัญญาณ->>+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 เป็นโมดูลเว็บแอสเซมบลี (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->>-ผู้ส่ง: ส่งคืน ciphertext ที่เข้ารหัสด้วยคีย์สาธารณะ
ผู้ส่ง->> ตัวรับสัญญาณ: ส่ง ciphertext ที่เข้ารหัสไปยังผู้รับ
ตัวรับสัญญาณ->>+rx: decrypt data (อินพุต ciphertext และรหัสผ่าน)
RX->>-ตัวรับสัญญาณ: ส่งคืนข้อมูลที่ถอดรหัส
เครื่องมือ/ห้องสมุดนี้มีให้โดยไม่มีการรับประกันใด ๆ และไม่มีการรับประกันความมั่นคง เนื่องจากลักษณะการทดลองของส่วนประกอบบางอย่างคาดว่าจะมีการปรับเปลี่ยนรหัสที่เก็บและ API จะเกิดขึ้นในอนาคต ควรระมัดระวังก่อนที่จะรวมสิ่งนี้ไว้ในแอปพลิเคชันการผลิต โปรดรายงานปัญหาด้านความปลอดภัยที่ระบุไว้ทันที ความร่วมมือของคุณในการแจ้งให้เราทราบถึงข้อกังวลดังกล่าวได้รับการชื่นชมอย่างมาก