mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-10 16:16:45 +08:00
111 lines
3.6 KiB
JavaScript
111 lines
3.6 KiB
JavaScript
/**
|
||
* @author 李想
|
||
* @Date create in 2021/03/16
|
||
*/
|
||
import { JSEncrypt } from 'jsencrypt'
|
||
let CryptoJS = require('crypto-js')
|
||
//生成随机字符串,默认24位
|
||
export function randomString(len) {
|
||
len = len || 24
|
||
var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678oOLl9gqVvUuI1'
|
||
var maxPos = $chars.length
|
||
var pwd = ''
|
||
for (let i = 0; i < len; i++) {
|
||
pwd += $chars.charAt(Math.floor(Math.random() * maxPos))
|
||
}
|
||
return pwd
|
||
}
|
||
// RSA加密,公钥加密
|
||
export let RSAEncrypt = function(data, publicKey) {
|
||
let crypt = new JSEncrypt()
|
||
crypt.setPublicKey(publicKey)
|
||
return crypt.encrypt(data)
|
||
}
|
||
// RSA解密,私钥解密
|
||
// export let RSADecrypt = function (data, privateKey) {
|
||
// let crypt = new JSEncrypt()
|
||
// crypt.setPrivateKey(privateKey)
|
||
// return crypt.decrypt(data)
|
||
// }
|
||
|
||
export let AESEncryptV2 = function(data, keys) {
|
||
//加密V2
|
||
var key = CryptoJS.enc.Hex.parse(keys)
|
||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF') //偏移量
|
||
var encrypted = CryptoJS.AES.encrypt(data, key, {
|
||
iv: iv,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
})
|
||
return encrypted.toString()
|
||
}
|
||
export let AESDecryptV2 = function(encrypted, keys) {
|
||
//解密V2
|
||
var key = CryptoJS.enc.Hex.parse(keys)
|
||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF')
|
||
var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
|
||
iv: iv,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
})
|
||
return CryptoJS.enc.Utf8.stringify(decrypted)
|
||
}
|
||
// AES加密V3
|
||
export let AESEncrypt = function(data, key) {
|
||
var key = CryptoJS.enc.Utf8.parse(key)
|
||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF')
|
||
var encrypted = CryptoJS.AES.encrypt(data, key, {
|
||
iv: iv,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
})
|
||
return encrypted.toString()
|
||
}
|
||
// AES解密V3
|
||
export let AESDecrypt = function(encrypted, key) {
|
||
var key = CryptoJS.enc.Utf8.parse(key)
|
||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF')
|
||
var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
|
||
iv: iv,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
})
|
||
return decrypted.toString(CryptoJS.enc.Utf8)
|
||
}
|
||
|
||
export let AESCacheEncrypt = function(data, keys) {
|
||
//加密 緩存
|
||
var key = CryptoJS.enc.Hex.parse(keys)
|
||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF') //偏移量
|
||
var encrypted = CryptoJS.AES.encrypt(data, key, {
|
||
iv: iv,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
})
|
||
return encrypted.toString()
|
||
}
|
||
export let AESCacheDecrypt = function(encrypted, keys) {
|
||
//解密 緩存
|
||
var key = CryptoJS.enc.Hex.parse(keys)
|
||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF')
|
||
var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
|
||
iv: iv,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
})
|
||
return CryptoJS.enc.Utf8.stringify(decrypted)
|
||
}
|
||
|
||
function format(base64, isPrivate = 0) {
|
||
var text = '-----BEGIN ' + (isPrivate ? 'PRIVATE' : 'PUBLIC') + ' KEY-----\n'
|
||
text += base64.replace(/[^\x00-\xff]/g, '$&\x01').replace(/.{64}\x01?/g, '$&\n')
|
||
text += '\n-----END ' + (isPrivate ? 'PRIVATE' : 'PUBLIC') + ' KEY-----'
|
||
return text
|
||
}
|
||
export let MD5 = function(key) {
|
||
return CryptoJS.MD5(key)
|
||
}
|
||
export let publicKey = format(
|
||
`MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApkixN3Dc6BLzb/V74VpxRXsSIu9AabGmK4xfcPiIqub0JS99a+P6XAOGuiMT2W4p1C8U9MZDRgHjUOrKGcc5ve9uT+U90LiAgwG58YdrklOTwlGvo6Xh4HQLRXMNoGsn6jLGdOV1RIVfWQ5EWfEB1+5v86QarLyfLIJ4ujVQfafEJ4dCwmoNSJk8xqVBAW9tDZlNOOgaZPJuEXVIFEEjIZCkFkFxkomwVNdp79Xewrj0mCybCDVy6Mcx3jOxY0gGwbGgS3YQxDbOpqYna8rcmf6CVJ2GA75sCU61Y8Of244CR5Rwkspbr1Pbf4UNSbVbpxzI08z1jrJvCVYWNQLMwwIDAQAB`
|
||
)
|