cubetiq-crypto-js/src/crypto/default-crypto.ts

44 lines
1.0 KiB
TypeScript

import * as crypto from "crypto"
import {
DEFAULT_AES_ALGORITHM,
DEFAULT_BUFFER_TYPE,
DEFAULT_ENCODING_TYPE,
} from "../config"
import { stringToBuffer } from "../util"
const encrypt = (
data: string,
key: string | Buffer,
iv?: string | Buffer | null
): string => {
const cipher = crypto.createCipheriv(
DEFAULT_AES_ALGORITHM,
stringToBuffer(key),
stringToBuffer(iv || key)
)
let encrypted = cipher.update(
data,
DEFAULT_ENCODING_TYPE,
DEFAULT_BUFFER_TYPE
)
encrypted += cipher.final(DEFAULT_BUFFER_TYPE)
return encrypted
}
const decrypt = (data: string, key: Buffer, iv?: Buffer | null): string => {
const decipher = crypto.createDecipheriv(
DEFAULT_AES_ALGORITHM,
stringToBuffer(key),
stringToBuffer(iv || key)
)
let decrypted = decipher.update(
data,
DEFAULT_BUFFER_TYPE,
DEFAULT_ENCODING_TYPE
)
decrypted += decipher.final(DEFAULT_ENCODING_TYPE)
return decrypted
}
export { encrypt, decrypt }