50 lines
1.2 KiB
TypeScript

import CryptoJS from 'crypto-js'
/**
* AES128ECBEncrypt 加密方法
*/
export function AES128ECBEncrypt(inputText: any, key: any) {
const inputArr = []
while (inputText.length < 32) {
inputText += '0'
}
for (let i = 0; i < inputText.length / 2; i++) {
inputArr.push(Number.parseInt(inputText.substring(i * 2, i * 2 + 2), 16))
}
const inputParse = int8arrayParse(inputArr)
const keyParse = CryptoJS.enc.Utf8.parse(key)
const n = CryptoJS.AES.encrypt(inputParse, keyParse, {
iv: [],
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.NoPadding,
})
const w = int8arrayStringify(n.ciphertext)
const encryptStr = bufTohex(w.buffer)
return encryptStr
}
export function bufTohex(buffer) {
return Array.prototype.map.call(new Uint8Array(buffer), x => (`00${x.toString(16)}`).slice(-2)).join('')
}
export function int8arrayParse(e: any) {
const r = e.length
const i = []
let n = 0
for (; n < r; n++) {
i[n >>> 2] |= (255 & e[n]) << 24 - n % 4 * 8
}
return CryptoJS.lib.WordArray.create(i, r)
}
export function int8arrayStringify(t: any) {
const e = t.words
const r = t.sigBytes
const i = new Int8Array(r)
let n = 0
for (; n < r; n++) {
i[n] = e[n >>> 2] >> 24 - n % 4 * 8 & 255
}
return i
}