UNPKG

vue-ant-patterns

Version:

vue-ant-patterns

58 lines (52 loc) 1.65 kB
/* * @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;