javascript-blowfish

Blowfish encryption library Javascript, jquery,coffeescript (blowfish.js)

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/447701/1069157/javascript-blowfish.js

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
Avenshy (Avenshy)
版本
0.0.1.20220711082510
创建于
2022-07-11
更新于
2022-07-11
大小
36.3 KB
许可证
暂无

javascript-blowfish

From: https://github.com/agorlov/javascript-blowfish/tree/d8c126defd1a82400560780ebf6ebf8c66831ea9

Blowfish encryption library Javascript, jquery,coffeescript (blowfish.js)

Works well both in old and new browsers.

Blowfish is block cipher, block length is 8 byte.

Online DEMO of javascript-blowfish.

A key advantage of the library is that it works correctly with strings in UTF-8.

Text data encryption (ASCII/text)

It you want to encrypt string information (like text-message, or json, xml): use trimZeros method (see bellow Example 1).

Example: ECB mode, default

var bf = new Blowfish("secret key");
var encrypted = bf.encrypt("secret message");
var decrypted = bf.decrypt(encrypted);
decrypted = bf.trimZeros(decrypted); // for string/text information 
console.log(decrypted);

Binary data encryption

If you want to encrypt binary data you must provide encrypt function with string length multiple by 8.

Example:

Input string for encryption: "asdf" (4 bytes) is not enough. Blowfish want 8-byte string (or 16, 24, 32,...)

So my lib automaticaly pad string with zeros: "asdf\0\0\0\0" If you want to prevent such behaviour you should pad input data to block size.

Additional info about padding: Using Padding in Encryption (@lucnap) suggested

After decryption we will get not "asdf", but "asdf\0\0\0\0" string.

Example 2: CBC mode (better for encrypting long messages and images).

For CBC you need additional key (CBC Vector) which length should be 8 bytes.

var bf = new Blowfish("key", "cbc");
var encrypted = bf.encrypt("secret message", "cbcvecto");
var decrypted = bf.decrypt(encrypted, "cbcvecto");

Blowfish when encrypt produces binary string as result. It's not usable for example, to copy paste. We could encode it to base64 text format:

Example 3: with base64 encoded output

var bf = new Blowfish("key");

// Encrypt and encode to base64
var encrypted = bf.base64Encode(bf.encrypt("secret message"));
console.log(encrypted);

// Decrypt
var encrypted = bf.base64Decode(encrypted);
var decrypted = bf.decrypt(encrypted);

Node.js and npm version

Upd: 21.07.2018

Installation:

$ npm install agorlov/javascript-blowfish

Usage example:

const Blowfish = require('javascript-blowfish');

const key = "secret key";
const bf = new Blowfish(key);

console.log("Blowfish encrypt text by key: " + key);

// Encryption
const encrypted = bf.encrypt("Secret message. Confidentially!");
let encryptedMime = bf.base64Encode(encrypted);
console.log(encryptedMime);

// Decryption
console.log(
    'decrypted: ',
    bf.decrypt(
        bf.base64Decode(encryptedMime)
    )
);