generated from cubetiq/ts-project
44 lines
1.0 KiB
TypeScript
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 }
|