当前位置:首页 > Windows程序 > 正文

C#生成随机验证码

2021-03-27 Windows程序

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;

using System.IO;

using System.Text;

using System.Web;

 

namespace Demo

{

    /// <summary>

    /// Captcha

    /// </summary>

    public class Captcha

    {

        #region Private Field

        /// <summary>

        /// 随机种子

        /// </summary>

        private Random objRandom = new Random();

        #endregion

 

        #region Public Property

 

        #region 验证码长度

        /// <summary>

        /// 验证码长度

        /// </summary>

        private int length = 4;

        /// <summary>

        /// 验证码长度(默认为4)

        /// </summary>

        public int Length

        {

            get { return this.length; }

            set { this.length = value; }

        }

        #endregion

 

        #region 验证码字符串

        /// <summary>

        /// 验证码字符串

        /// </summary>

        private string verifyCodeText = null;

 

        /// <summary>

        /// 验证码字符串

        /// </summary>

        public string VerifyCodeText

        {

            get { return this.verifyCodeText; }

            set { this.verifyCodeText = value; }

        }

        #endregion

 

        #region 是否加入小写字母

        /// <summary>

        /// 是否加入小写字母

        /// </summary>

        private bool addLowerLetter = false;

 

        /// <summary>

        /// 是否加入小写字母(不包括o)

        /// </summary>

        public bool AddLowerLetter

        {

            get { return this.addLowerLetter; }

            set { this.addLowerLetter = value; }

        }

        #endregion

 

        #region 是否加入大写字母

        /// <summary>

        /// 是否加入大写字母

        /// </summary>

        private bool addUpperLetter = false;

 

        /// <summary>

        /// 是否加入大写字母(不包括O)

        /// </summary>

        public bool AddUpperLetter

        {

            get { return this.addUpperLetter; }

            set { this.addUpperLetter = value; }

        }

        #endregion

 

        #region 字体大小

        /// <summary>

        /// 字体大小

        /// </summary>

        private int fontSize = 18;

 

        /// <summary>

        /// 字体大小(默认为18)

        /// </summary>

        public int FontSize

        {

            get { return this.fontSize; }

            set { this.fontSize = value; }

        }

        #endregion

 

        #region 字体颜色

        /// <summary>

        /// 字体颜色

        /// </summary>

        private Color fontColor = Color.Blue;

 

        /// <summary>

        /// 字体颜色(默认为Blue)

        /// </summary>

        public Color FontColor

        {

            get { return this.fontColor; }

            set { this.fontColor = value; }

        }

        #endregion

 

        #region 字体类型

        /// <summary>

        /// 字体类型

        /// </summary>

        private string fontFamily = "Verdana";

 

        /// <summary>

        /// 字体类型(默认为Verdana)

        /// </summary>

        public string FontFamily

        {

            get { return this.fontFamily; }

            set { this.fontFamily = value; }

        }

        #endregion

 

        #region 背景色

        /// <summary>

        /// 背景色

        /// </summary>

        private Color backgroundColor = Color.AliceBlue;

 

        /// <summary>

        /// 背景色(默认为AliceBlue)

        /// </summary>

        public Color BackgroundColor

        {

            get { return this.backgroundColor; }

            set { this.backgroundColor = value; }

        }

        #endregion

 

        #region 前景噪点数量

        /// <summary>

        /// 前景噪点数量

        /// </summary>

        private int foreNoisePointCount = 2;

 

        /// <summary>

        /// 前景噪点数量(默认为2)

        /// </summary>

        public int ForeNoisePointCount

        {

            get { return this.foreNoisePointCount; }

            set { this.foreNoisePointCount = value; }

        }

        #endregion

 

        #region 随机码的旋转角度

        /// <summary>

        /// 随机码的旋转角度

        /// </summary>

        private int randomAngle = 45;

 

        /// <summary>

        /// 随机码的旋转角度(默认为40度)

        /// </summary>

        public int RandomAngle

        {

            get { return this.randomAngle; }

            set { this.randomAngle = value; }

        }

        #endregion

 

        #endregion

 

        #region Constructor Method

        /// <summary>

        /// 构造方法

        /// </summary>

        public Captcha()

        {

            this.GetText();

        }

        #endregion

 

        #region Private Method

        /// <summary>

        /// 得到验证码字符串

        /// </summary>

        private void GetText()

        {

            //没有外部输入验证码时随机生成

            if (String.IsNullOrEmpty(this.verifyCodeText))

            {

                StringBuilder objStringBuilder = new StringBuilder();

 

                //加入数字1-9

                for (int i = 1; i <= 9; i++)

                {

                    objStringBuilder.Append(i.ToString());

                }

 

                //加入大写字母A-Z,,不包括O

                if (this.addUpperLetter)

                {

                    char temp = ‘ ‘;

 

                    for (int i = 0; i < 26; i++)

                    {

                        temp = Convert.ToChar(i + 65);

 

                        //如果生成的字母不是‘O‘

                        if (!temp.Equals(‘O‘))

                        {

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68401.html