"use strict";
/**
 * 加解密、编码模块
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.CryptoUtils = void 0;
var CryptoJS = require('crypto-js');
/**
 * `crypto-js`加解密, `md5`、`sha1`、`sha256`、`hmac`、`aes`、`des`
 *
 * @see [crypto-js](https://cryptojs.gitbook.io/docs/)
 */
var CryptoUtils = /** @class */ (function () {
    function CryptoUtils() {
    }
    /**
       * des加密
       */
    CryptoUtils.desEncrypt = function (content, key, iv) {
        var keybyte = CryptoJS.enc.Utf8.parse(key);
        var ivbyte = CryptoJS.enc.Utf8.parse(iv);
        var srcs = CryptoJS.enc.Utf8.parse(content);
        // des3加密 TripleDES
        var encrypted = CryptoJS.TripleDES.encrypt(srcs, keybyte, {
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7,
            iv: ivbyte //注iv是偏移量，如不需要可注释掉
        });
        return encrypted.toString(); //输出的是base64格式的字符串，常规选这种
        //return encrypted.ciphertext.toString().toUpperCase(); //输出的是16进制的字符串
    };
    /**
     * des解密
     */
    CryptoUtils.desDecrypt = function (content, key, iv) {
        var ciphertext = CryptoJS.enc.Base64.parse(content);
        var keybyte = CryptoJS.enc.Utf8.parse(key);
        var ivbyte = CryptoJS.enc.Utf8.parse(iv);
        var decrypted = CryptoJS.TripleDES.decrypt({ ciphertext: ciphertext }, keybyte, {
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7,
            iv: ivbyte // 设置偏移量
        });
        return decrypted.toString(CryptoJS.enc.Utf8);
    };
    // 单元测试可以使用
    CryptoUtils.generateDesKeyAndIv = function () {
        // 生成 8 字节（64 位）的随机 DES 密钥
        var key = CryptoJS.lib.WordArray.random(8);
        // 生成 8 字节（64 位）的随机 IV（偏移量）
        var iv = CryptoJS.lib.WordArray.random(8);
        // 转换为十六进制字符串格式
        var keyHex = key.toString(CryptoJS.enc.Hex);
        var ivHex = iv.toString(CryptoJS.enc.Hex);
        return {
            key: keyHex,
            iv: ivHex
        };
    };
    return CryptoUtils;
}());
exports.CryptoUtils = CryptoUtils;
//# sourceMappingURL=Security.js.map