开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1394|回复: 1
收起左侧

[技术分享] js卡密处理

[复制链接]

结帖率:88% (43/49)
发表于 2021-9-30 19:24:18 | 显示全部楼层 |阅读模式   山东省烟台市
本帖最后由 浅浅` 于 2021-9-30 19:37 编辑

如上图所示,可以添加一个卡密处理的小工具

VUE引用JS示例:
  1. <template>  
  2.     <div class="teslist">  
  3.         <button @click="methods1">显示console</button>  
  4.     </div>  
  5. </template>  
  6. <script src="../../lib/myconsole.js"></script>  
  7. <script>  
  8.     import { realconsole } from '../../lib/myconsole.js'  
  9.     export default {  
  10.         methods:{
  11.           methods1:function(){  
  12.               realconsole();  
  13.            }  
  14.     }}  
  15. </script>  
  16. <style>  
  17.     .teslist {  
  18.     }  
  19. </style>  
复制代码
卡密处理JS代码
  1. //去除重复卡密 传入卡密数组
  2. function removeRepetitionKey(arr) {
  3. return Array.from(new Set(arr))
  4. }


  5. //随机生成卡密 len:卡密长度 str:开头 type:1大写字母 2小写字母 3大小写混合 4数字 5数字大小写字母混合 默认数字大小写混合
  6. function randomKey(len, str, nub, type) {
  7. len = len || 32;
  8. var arr = [];
  9. switch (type) {
  10. case 1:
  11. var $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  12. break;
  13. case 2:
  14. var $chars = 'abcdefghijklmnopqrstuvwxyz';
  15. break;
  16. case 3:
  17. var $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  18. break;
  19. case 4:
  20. var $chars = '1234567890';
  21. break;
  22. case 5:
  23. var $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
  24. break;
  25. default:
  26. var $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
  27. break;
  28. }
  29. var maxPos = $chars.length;
  30. for (j = 0; j < nub; j++) {
  31. var pwd = '';
  32. for (i = 0; i < len; i++) {
  33. pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
  34. }
  35. arr.push(str+pwd)
  36. }
  37. return arr

  38. }



  39. //替换卡密内容 传入卡密数组,将每条卡密的str1替换成str2 这个会替换原数组,不影响
  40. function replaceKey(arr, str1, str2) {
  41. arr.forEach((v, i) => {
  42. arr[i] = arr[i].replace(str1, str2)
  43. })
  44. return arr
  45. }


  46. //头部或尾部增加字符串
  47. function addKey(arr, before, after) {
  48. arr.forEach((v, i) => {
  49. arr[i] = before + arr[i] + after
  50. })
  51. return arr
  52. }

  53. //复制卡密 nub:复制几次 disorganize:是否打乱顺序
  54. function copyKey(arr, nub, disorganize) {
  55. var arr_new = []
  56. arr.forEach((v, i) => {
  57. for (let i = 0; i < nub; i++) {
  58. arr_new.push(v)
  59. }
  60. })
  61. if (disorganize) {
  62. arr_new.sort(function() {
  63. return .5 - Math.random();
  64. });
  65. }
  66. return arr_new
  67. }

  68. //过滤卡密 len 长度 isCut(true是去除卡密 false是保留卡密)type=1 大于 type=2 小于 type=3等于
  69. function removeLenKey(arr, len, isCut, type) {
  70. var arr_new = []
  71. if (isCut) {
  72. for (let i = 0; i < arr.length; i++) {
  73. if (type == 1) {
  74. if (arr[i].length > len) {
  75. arr.splice(i, 1)
  76. i--;
  77. }
  78. } else if (type == 2) {
  79. if (arr[i].length < len) {
  80. arr.splice(i, 1)
  81. i--;
  82. }
  83. } else {
  84. if (arr[i].length == len) {
  85. arr.splice(i, 1)
  86. i--;
  87. }
  88. }
  89. }
  90. arr_new = arr
  91. } else { //
  92. arr.forEach((v, i) => {
  93. if (type == 1) {
  94. if (v.length > len) {
  95. arr_new.push(v)
  96. }
  97. } else if (type == 2) {
  98. if (v.length < len) {
  99. arr_new.push(v)
  100. }
  101. } else {
  102. if (v.length == len) {
  103. arr_new.push(v)
  104. }
  105. }
  106. })
  107. }
  108. return arr_new
  109. }

  110. //截取卡密 len 截取长度 isLeft(true是截取前面(左侧) false是截取后面(右侧))
  111. function cutOutKey(arr, len, isLeft) {
  112. arr.forEach((v, i) => {
  113. if (isLeft) {
  114. arr[i] = arr[i].substring(0, len);
  115. } else {
  116. arr[i] = arr[i].substring(arr[i].length - len, arr[i].length);
  117. }
  118. })
  119. return arr;
  120. }


  121. //截取卡密 str 截取字符串之前或之后 isLeft(true是截取前面(左侧) false是截取后面(右侧))
  122. function cutOutKey1(arr, str, isLeft) {
  123. arr.forEach((v, i) => {
  124. arr[i] = getCaption(arr[i], str, isLeft);
  125. })
  126. return arr;
  127. }

  128. //这个函数是给其他调用的
  129. function getCaption(obj, str, state) {
  130. if (state) {
  131. var index = obj.indexOf(str);
  132. } else {
  133. var index = obj.lastIndexOf(str);
  134. }

  135. if (state) {
  136. obj = obj.substring(0, index) == '' ? obj : obj.substring(0, index);
  137. } else {
  138. obj = obj.substring(index + 1, obj.length) == '' ? obj : obj.substring(index + 1, obj.length);
  139. }
  140. return obj;
  141. }

  142. //生成序列
  143. function listKey(min, max) {
  144. var arr = []
  145. var len = max - min + 1
  146. for (var i = 0; i < len; i++) {
  147. arr.push(Number(min) + Number(i))
  148. }
  149. return arr
  150. }

复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

签到天数: 1 天

发表于 2021-9-30 21:09:54 | 显示全部楼层   吉林省吉林市
我很佩服能 做加密的人 这些都和破J有关
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表