passTransform.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * @Description: 字符转换为指定字符
  3. * @Autor: kindring
  4. * @Date: 2022-01-17 11:30:36
  5. * @LastEditors: kindring
  6. * @LastEditTime: 2022-02-17 15:38:05
  7. * @LastDescript:
  8. */
  9. const crypto = require('crypto');
  10. // let CryptoJS = require("crypto-js")
  11. var MCrypt = require('mcrypt').MCrypt;
  12. let CryptoJS = require('./crypto-js')
  13. // console.log(CryptoJS);
  14. /**
  15. * 字符串计算md5
  16. * @param {*} str
  17. * @returns
  18. */
  19. function md5(str) {
  20. const hash = crypto.createHash('md5');
  21. // 可任意多次调用update(),效果相当于多个字符串相加
  22. hash.update(str);
  23. return hash.digest('hex');
  24. }
  25. /**
  26. * 数值3des加密
  27. * @param {string} key
  28. * @param {string} str
  29. */
  30. function des3(key, str) {
  31. //key不足24位自动以0(最小位数是0)补齐,如果多余24位,则截取前24位,后面多余则舍弃掉
  32. let base64Key = CryptoJS.enc.Utf8.parse(key);
  33. //加密使用的是3DES中的ECB,解密对应的使用ECB
  34. let encrypt = CryptoJS.TripleDES.encrypt(str, base64Key, {
  35. iv: CryptoJS.enc.Utf8.parse('0123456789'), //iv偏移量
  36. // mode: CryptoJS.mode.CBC, //CBC模式
  37. mode: CryptoJS.mode.ECB, //ECB模式
  38. // padding: CryptoJS.pad.Pkcs7 //padding处理
  39. });
  40. // console.log(encrypt);
  41. console.log(encrypt.toString());
  42. return encrypt.toString();
  43. }
  44. function pkcs5_pad(text, blocksize) {
  45. console.log(blocksize);
  46. let pad = blocksize - (text.length % blocksize);
  47. return `${text}${str_repeat(pad, pad)}`;
  48. }
  49. function str_pad(str, target, fillStr) {
  50. while (str.length < target) {
  51. str += fillStr
  52. }
  53. return str;
  54. }
  55. function str_repeat(str, n) {
  56. return new Array(n).fill(str).join('');
  57. }
  58. module.exports = {
  59. md5: md5,
  60. des3: des3
  61. }