• 玩具:加减法验证码(1+?=4)


    遇到个小需求要写一个验证码功能,就是加减法,感觉挺好玩的就顺手写了。纯属自娱自乐,凑数,Orz~~
    生成图片的部分没写,逻辑都差不多。主要注意:干扰线,噪点,变形,背景色就OK。我用的现成的代码,就不发了。

    /**
     * 加减法验证码
     */
    public class VerifyCodeUtil {
        private final static Map<Integer, String> TYPE = new HashMap<>(2);
        private final static int SUB = 0;
        private final static int PLUS = 1;
        static {
            TYPE.put(SUB, "-");
            TYPE.put(PLUS, "+");
        }
        public static String[] generate() {
            Random random = new Random();
            int type = random.nextInt(2);
            int[] arr = new int[]{random.nextInt(50), random.nextInt(50), Integer.MAX_VALUE};
            switch (type) {
                case SUB :  // 不出现负数
                    if (arr[0] < arr[1]) {
                        arr[0] ^= arr[1];
                        arr[1] ^= arr[0];
                        arr[0] ^= arr[1];
                    }
                    arr[2] = arr[0] - arr[1];
                    break;
                case PLUS :
                    arr[2] = arr[0] + arr[1];
                    break;
            }
            String[] ret = new String[] {arr[0] + "", arr[1] + "", arr[2] + ""};
            // 选一随机位置为"?"
            int pos = random.nextInt(3);
            String answer = ret[pos];
            ret[pos] = "?";
            return new String[]{ret[0]+TYPE.get(type) + ret[1] + "=" + ret[2], answer};
        }
    
        public static void main(String[] args) {
            String[] s = generate();
            System.out.println("verify code:" + s[0]);
            System.out.println("answer:" + s[1]);
        }
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    这是一棵树吗
    感染者
    es6 语法
    css3 flex 详解,可以实现div内容水平垂直居中
    移动端实现复制内容至剪贴板小例子
    jq+mui 阻止事件冒泡
    移动端H5 判断IOS还是Android 平台
    移动端布局 rem,和px
    关于H5移动端开发 iPhone X适配
    H5 微信公众号 监听返回事件
  • 原文地址:https://www.cnblogs.com/liushijie/p/4712900.html
Copyright © 2020-2023  润新知