NO LONGER MAINTAIN I have been very busy lately and can no longer maintain this project and since there is roadmap for Deno for standard crypto library: denoland/deno#11690. I feel there is no longer need for this library.
A pure Javascript/Typescript cryptography implementation for Deno. We will try to use WebCrypto if available, then fallback pure Javascript implementation.
-
AES (Advanced Encryption Standard)
- Supports Block Ciper Mode: CBC, CFB, and ECB
-
- Supports RSA-PKCS1 v1.5 and RSA-OAEP padding
- Supports RSASSA-PSS signature
- Supports RSASSA-PKCS1-v1_5 signature
Some useful ultities that you can use
Click here for complete document: Complete Documents
You can choose to include the whole god_crypto
implementation or just include
module that you need.
// Load everything
import { AES, RSA, TOTP, hmac, encode } from "https://deno.land/x/god_crypto/mod.ts";
// Load what you need
import { AES } from "https://deno.land/x/god_crypto/aes.ts";
import { RSA } from "https://deno.land/x/god_crypto/rsa.ts";
import { TOTP } from "https://deno.land/x/god_crypto/otp.ts";
import { hmac } from "https://deno.land/x/god_crypto/hmac.ts";
import { AES } from "https://deno.land/x/god_crypto/aes.ts";
const aes = new AES("Hello World AES!", {
mode: "cbc",
iv: "random 16byte iv",
});
const cipher = await aes.encrypt("This is AES-128-CBC. It works.");
console.log(cipher.hex());
// 41393374609eaee39fbe57c96b43a9da0d547c290501be50f983ecaac6c5fd1c
const plain = await aes.decrypt(cipher);
console.log(plain.toString());
// This is AES-128-CBC. It works.
import { RSA } from "https://deno.land/x/god_crypto/rsa.ts";
// Parsing public/private key
const publicKey = RSA.parseKey(Deno.readTextFileSync("./public.pem"));
const privateKey = RSA.parseKey(Deno.readTextFileSync("./private.pem"));
const cipher = await new RSA(publicKey).encrypt("Hello World");
console.log(ciper.base64());
const plain = await new RSA(privateKey).decrypt(cipher);
console.log(plain.toString());