vue-ant-patterns
Version:
vue-ant-patterns
58 lines (52 loc) • 1.65 kB
JavaScript
/*
* @Author: daibing
* @Date: 2020-06-01 15:11:39
* @LastEditTime: 2021-07-29 14:51:11
* @LastEditors: daibing
* @Description:
* @FilePath: \hcm6-patterns\biz\_biz-utils\password.js
*/
import Utf8 from 'crypto-js/enc-utf8';
import AES from 'crypto-js/aes';
import ECB from 'crypto-js/mode-ecb';
import Pkcs7 from 'crypto-js/pad-pkcs7';
import Md5 from 'crypto-js/md5';
var randomChars = function randomChars(len) {
len = len || 32;
var $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnoprstuvwxyz0123456789';
var maxPos = $chars.length;
var pwd = '';
for (var i = 0; i < len; i++) {
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
};
function passwdCrypto(pas) {
var isMd5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var hash = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'tkzcwdfj0734sydtkhgj0731';
var keyHash = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'anihCfoknaB65mcH';
var md5Pass = Md5('' + pas + hash);
var KeySize = 16;
var $key = randomChars(KeySize);
var baseKey = Utf8.parse(keyHash);
var key = Utf8.parse($key);
// 是否用md5加密,修改密码的位置不用
var password = Utf8.parse(pas);
if (isMd5) {
password = Utf8.parse(md5Pass);
}
var encryptKey = AES.encrypt(key, baseKey, {
mode: ECB,
padding: Pkcs7
});
var encryptPwd = AES.encrypt(password, key, {
mode: ECB,
padding: Pkcs7
});
var encryptedPwdStr = encryptPwd.toString();
return {
password: encryptedPwdStr,
key: encryptKey.toString()
};
}
export default passwdCrypto;