Xipher هي مجموعة منسقة من بدائل التشفير التي تم تجميعها معًا لتنفيذ التشفير غير المتماثل القائم على كلمة المرور.
قم بتنزيل أحدث ثنائي من صفحة الإصدارات وأضفه إلى مسارك.
يمكن تثبيت Xipher مع المشروب باستخدام الأمر التالي على MacOS
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يمكنك أيضًا تشغيل Xipher دون التثبيت باستخدام Docker:
docker run --rm -v $PWD :/data -it shibme/xipher help تتوفر واجهة ويب متداخلة مع CLI ، التي يتم تنفيذها باستخدام مجموعة الويب هنا.
يوضح مخطط التسلسل التالي سير عمل تطبيق الويب.
Sequencediagram
المشارك Rx كـ Xipher <br> (على المتصفح)
جهاز استقبال الممثل
مرسل الممثل
المشارك SX كـ Xipher <br> (على المتصفح)
جهاز الاستقبال->>+RX: يفتح تطبيق Xipher على المتصفح
RX->> RX: يقوم بإنشاء زوج مفتاح ويخزنهما في المستعرض المحلي
Rx->>-المتلقي: إرجاع المفتاح العام <br> (كعنوان URL الذي يمكن مشاركته)
جهاز الاستقبال->>+المرسل: يشارك عنوان URL للتشفير <br> (هذا يحتوي على المفتاح العام كمعلمة)
المرسل->>+SX: يفتح عنوان URL للتشفير العام <br> (يفتح صفحة ويب تشفير Xipher)
المرسل->> SX: المدخلات البيانات التي يجب تشفيرها
SX->> SX: تشفير البيانات باستخدام المفتاح العام من عنوان URL
SX->>-المرسل: إرجاع النص المشفر المشفر مع المفتاح العام
المرسل->>-المتلقي: يرسل النص المشفر إلى المتلقي إلى المتلقي
جهاز الاستقبال->>+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 في تشفير البيانات باستخدام مفتاح عام يعتمد على كلمة المرور.
Sequencediagram
المشارك RX كـ Xipher
جهاز استقبال الممثل
مرسل الممثل
المشارك SX كـ Xipher
جهاز الاستقبال->>+RX: اشتقى الجمهور (مدخلات كلمة مرور)
RX->>-المتلقي: إرجاع المفتاح العمومي
المتلقي->> المرسل: الأسهم العامة المفتاح
المرسل->>+SX: تشفير البيانات باستخدام المفتاح العمومي
SX->>-المرسل: إرجاع النص المشفر المشفر مع المفتاح العمومي
المرسل->> المتلقي: يرسل النص المشفر إلى المتلقي إلى المتلقي
جهاز الاستقبال->>+RX: فك تشفير البيانات (مدخلات النص المشفر وكلمة المرور)
RX->>-جهاز الاستقبال: إرجاع بيانات فك التشفير
يتم توفير هذه الأداة/المكتبة دون أي ضمانات ، وليس هناك ما يضمن استقرارها. نظرًا للطبيعة التجريبية لبعض مكوناتها ، من المتوقع أن يتم إجراء تعديلات على الكود والمستودع وواجهة برمجة التطبيقات في المستقبل. ينصح الحذر قبل دمج هذا في تطبيق الإنتاج. يرجى الإبلاغ عن أي مشكلات أمنية محددة على الفور. إن تعاونك في إخطارنا بمثل هذه المخاوف موضع تقدير كبير.