美文网首页
java接入手机短信发送验证码

java接入手机短信发送验证码

作者: quick412 | 来源:发表于2018-11-18 23:09 被阅读0次

    市面上短信平台非常多,当初我刚接手这个项目的时候,技术群里的大神介绍给我阿里大于的平台,但是我接入了几次,发现还是接入还是比较困难,试了一个下午的时间,没有接入成功。然后我就自己百度了一些其他平台,经过多方对比,最后选择了互亿无线的短信接口www.ihuyi.com,也有赠送10条短信使用,注册完之后就能送,不够用的话可以多注册几个账号哈哈~

    好了话不多说,现在分享起代码

    首先是生成验证码的RandUtil类。这里验证码我定义的是6位数,利用随机数生成,为GetMessage提供验证码。

    i

    mport java.util.Random;

    public class RandUtil {

        public static String getRandNum() {

            String randNum = new Random().nextInt(1000000)+"";

            System.out.println("生成"+randNum);

            if (randNum.length()!=6) {  //如果生成的不是6位数随机数则返回该方法继续生成

                return getRandNum();

            }

            return randNum;

        }

    }

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    然后是一个发送验证码的工具类QueryUtil。这个类我们在里面写MD5的签名加密sig和时间戳timestamp的获取

    import java.security.MessageDigest;

    import java.security.NoSuchAlgorithmException;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    /**

    * 类描述:发送验证码工具类

    */

    public class QueryUtil {

        public static String queryArguments(String ACCOUNT_SID,String AUTH_TOKEN, String smsContent,String to) {

            String timestamp = getTimestamp(); //时间戳

            String sig =  MD5(ACCOUNT_SID,AUTH_TOKEN,timestamp);//签名认证

            String str = "accountSid="+ACCOUNT_SID+"&smsContent="+

                    smsContent+"&to="+to+"&timestamp="+timestamp+"&sig="+sig;

            return str;

        }

        /**

        * MD5加密

        * @param args

        * @return

        */

        public static String MD5(String... args){ //动态参数

            StringBuffer result = new StringBuffer();

            if (args == null || args.length == 0) {

                return "";

            } else {

                StringBuffer str = new StringBuffer();

                for (String string : args) {

                    str.append(string);

                }

                System.out.println("加密前:\t"+str.toString());

                try {

                    MessageDigest digest = MessageDigest.getInstance("MD5");

                    byte[] bytes = digest.digest(str.toString().getBytes());

                    for (byte b : bytes) {

                        String hex = Integer.toHexString(b&0xff);  //转化十六进制

                        if (hex.length() == 1) {

                            result.append("0"+hex);

                        }else{

                            result.append(hex);

                        }

                    }

                } catch (NoSuchAlgorithmException e) {

                    e.printStackTrace();

                }

            }

            System.out.println("加密后:\t"+result.toString());

            return result.toString();

        }

        /*

        * 获取时间戳

        */

        public static String getTimestamp(){

            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

            Date date = new Date();

            return sdf.format(date);

        }

    ---------------------

    作者:hanjun1213

    来源:CSDN

    原文:https://blog.csdn.net/hanjun1213/article/details/84206260

    版权声明:本文为博主原创文章,转载请附上博文链接!

    相关文章

      网友评论

          本文标题:java接入手机短信发送验证码

          本文链接:https://www.haomeiwen.com/subject/rzpnfqtx.html