| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- const crypto = require('crypto')
- const KEY_STR = "Wet2C8d34f62ndi3"
- const IV_STR = "K6iv85jBD8jgf32D"
- const SALT = "rDJiNB9j7vD2"
- const KEY = Buffer.from(KEY_STR, 'utf-8')
- const IV = Buffer.from(IV_STR, 'utf-8')
- /**
- * AES 加密
- */
- function dataEncrypt(plainText) {
- try {
- const cipher = crypto.createCipheriv('aes-128-cbc', KEY, IV)
- cipher.setAutoPadding(true)
- let encrypted = cipher.update(plainText, 'utf-8')
- encrypted = Buffer.concat([encrypted, cipher.final()])
- return encrypted.toString('base64')
- } catch (err) {
- console.error('加密失败:', err.message)
- return null
- }
- }
- /**
- * AES 解密
- */
- function dataDecrypt(encryptedBase64Text) {
- try {
- const encryptedBuffer = Buffer.from(encryptedBase64Text, 'base64')
- const decipher = crypto.createDecipheriv('aes-128-cbc', KEY, IV)
- decipher.setAutoPadding(true)
- let decrypted = decipher.update(encryptedBuffer)
- decrypted = Buffer.concat([decrypted, decipher.final()])
- return decrypted.toString('utf-8')
- } catch (err) {
- console.error('解密失败:', err.message)
- return null
- }
- }
- /**
- * MD5 签名
- */
- function dataSign(dataObj) {
- if (typeof dataObj !== 'object') {
- throw new TypeError('data must be object')
- }
- const sortedKeys = Object.keys(dataObj).sort()
- let str = ''
- for (const key of sortedKeys) {
- str += key + String(dataObj[key])
- }
- str += SALT
- return crypto.createHash('md5').update(str, 'utf-8').digest('hex')
- }
- /**
- * OSS POST 签名
- */
- function ossPostSign(accessKeySecret, policyDocument) {
- const policyStr = JSON.stringify(policyDocument)
- const base64Policy = Buffer.from(policyStr).toString('base64')
- const signature = crypto
- .createHmac('sha1', accessKeySecret)
- .update(base64Policy)
- .digest('base64')
- return [base64Policy, signature]
- }
- module.exports = {
- dataEncrypt,
- dataDecrypt,
- dataSign,
- ossPostSign
- }
|