當前位置:首頁 » 操作系統 » c驗證碼源碼

c驗證碼源碼

發布時間: 2023-01-21 04:56:08

Ⅰ 用c語言編寫驗證碼

個人覺得,提問者的難點應該是在隨機生成4個漢字,至於驗證什麼的應該不是問題。
4個漢字其實就是8個位元組,主要是得搞清楚漢字是擴展ascii嘛的取值范圍,然後用隨機函數生成這個范圍的值就OK了。

Ⅱ 急求!1急求!!用c語言實現類似網頁驗證碼的演算法。拜託啦!!!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

intisright()
{
inti,input,letter,flag=0;
intt[4],num,upper,lower;
chara,b,c,d;

//隨機數產生
srand((unsigned)time(NULL));
for(i=0;i<4;i++)
{
input=rand()%3;//驗證碼可能為:數字、大寫字母、小寫字母
if(input==0){num=rand()%10+48;printf("%c",num);t[i]=num;}//數字
letter=rand()%26;
if(input==1)//大寫字母
{upper=letter+65;printf("%c",upper);t[i]=upper;}
if(input==2)//小寫字母
{lower=letter+97;printf("%c",lower);t[i]=lower;}

}
printf(" ");
//for(i=0;i<4;i++)
//printf("%c",t[i]);
scanf("%c%c%c%c",&a,&b,&c,&d);//輸入驗證碼
if(a==t[0]&&b==t[1]&&c==t[2]&&d==t[3])
printf("驗證碼正確 ");//驗證碼匹配
else{printf("驗證碼錯誤 ");flag=1;}
returnflag;//錯誤則返回1,正確返回0
}

main()
{
intsum=0,i,error;
for(i=0;;i++)
{
error=isright();
sum=sum+error;//統計錯誤次數
if(sum==3){printf("輸入次數達上限! ");break;}//錯誤3次,程序結束
}

}

Ⅲ 怎樣實現輸入驗證碼呢要用C語言的

#include <stdio.h>
#include <string.h>
main()
{
char a[15],i=3;
do{
printf("Password:");
gets(a);
if(strcmp(a,"hello")==0) break;//這里請連到你的密碼文件或者是連接到資料庫驗證,這里是 hello
}while(--i);
if(i==0) printf("Input errer 3 num.System close!\n");
else
{
//這里寫入你密碼正確要執行的代碼
}
}

Ⅳ c# Winform 實現登錄界面驗證碼功能(文末附源碼

閑來無事,最近自己發現自己的驗證碼功能還沒有寫過。於是就寫下了這篇文章。

界面就比較丑了,一個picturebox,一個textbox,一個button按鈕主要想的是先把功能實現了,萬一以後業務上需要使用呢。

實現以後的功能圖

在文本框中輸入對應文字,點擊確定來驗證,正確時候如圖所示

如果驗證失敗,沒有提示,直接更新驗證碼,當然需要使用的時候根據業務邏輯來就是了,這個就比較簡單了。

第一:生成驗證碼字元串,用到的是Random隨機函數

第二:將該字元串畫在picturebox中

第三點擊圖片,刷新驗證碼

第四驗證驗證碼不區分大小寫

或者區分大小寫

此時完成

源碼:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace suijima

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        //驗證碼的長度

        private const int iVerifyCodeLength = 6;

        //驗證碼

        private String strVerifyCode = "";

        //匹配字元的臨時變數

        string strTemp = "";

        private void btnUpdate_Click(object sender, EventArgs e)

        {

            UpdateVerifyCode();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            UpdateVerifyCode();

        }

        //更新驗證碼

        private void UpdateVerifyCode()

        {

            strVerifyCode = CreateRandomCode(iVerifyCodeLength);

            if(strVerifyCode=="")

            {

                return;

            }

            strTemp = strVerifyCode;

            CreateImage(strVerifyCode);

        }

        //生成驗證碼字元串

        private string CreateRandomCode(int iLength)

        {

            int rand;

            char code;

            string randomCode = String.Empty;

            //生成一定長度的驗證碼

            System.Random random = new Random();

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

            {

                rand = random.Next();

                if (rand % 3 == 0)

                {

                    code = (char)('A' + (char)(rand % 26));

                }

                else

                {

                    code = (char)('0' + (char)(rand % 10));

                }

                randomCode += code.ToString();

            }

            return randomCode;

        }

        ///  創建驗證碼圖片

        private void CreateImage(string strVerifyCode)

        {

            try

            {

                int iRandAngle = 45;    //隨機轉動角度

                int iMapWidth = (int)(strVerifyCode.Length * 21);

                Bitmap map = new Bitmap(iMapWidth, 28);    //創建圖片背景

                Graphics graph = Graphics.FromImage(map);

                graph.Clear(Color.AliceBlue);//清除畫面,填充背景

                graph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, map.Width - 1, map.Height - 1);//畫一個邊框

                graph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//模式

                Random rand = new Random();

                //背景噪點生成

                Pen blackPen = new Pen(Color.LightGray, 0);

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

                {

                    int x = rand.Next(0, map.Width);

                    int y = rand.Next(0, map.Height);

                    graph.DrawRectangle(blackPen, x, y, 1, 1);

                }

                //驗證碼旋轉,防止機器識別

                char[] chars = strVerifyCode.ToCharArray();//拆散字元串成單字元數組

                //文字距中

                StringFormat format = new StringFormat(StringFormatFlags.NoClip);

                format.Alignment = StringAlignment.Center;

                format.LineAlignment = StringAlignment.Center;

                //定義顏色

                Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green,

Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };

                //定義字體

                string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋體" };

                for (int i = 0; i < chars.Length; i++)

                {

                    int cindex = rand.Next(7);

                    int findex = rand.Next(5); Font f = new System.Drawing.Font(font[findex], 13, System.Drawing.FontStyle.Bold);//字體樣式(參數2為字體大小)

                    Brush b = new System.Drawing.SolidBrush(c[cindex]);

                    Point dot = new Point(16, 16);

                    float angle = rand.Next(-iRandAngle, iRandAngle);//轉動的度數

                    graph.TranslateTransform(dot.X, dot.Y);//移動游標到指定位置

                    graph.RotateTransform(angle);

                    graph.DrawString(chars[i].ToString(), f, b, 1, 1, format);

                    graph.RotateTransform(-angle);//轉回去

                    graph.TranslateTransform(2, -dot.Y);//移動游標到指定位置

                }

                pictureBox1.Image = map;

            }

            catch (ArgumentException)

            {

                MessageBox.Show("創建圖片錯誤。");

            }

        }

        private void button1_Click(object sender, EventArgs e)

        {

            //驗證大小寫

                char[] ch1 = textBox1.Text.ToCharArray();

                char[] ch2 = strTemp.ToCharArray();

                int nCount = 0;

                for (int i = 0; i < strTemp.Length;i++ )

                {

                    if((ch1[i]>='a'&&ch1[i]<='z')||(ch1[i]>='A'&&ch1[i]<='Z'))

                    {

                        if (ch1[i] - 32 == ch2[i] || ch1[i] + 32 == ch2[i])

                        {

                            nCount++;

                        }

                    }

                    else

                    {

                        if (ch1[i]==ch2[i])

                        {

                            nCount++;

                        }

                    }

                }

                if (nCount==strTemp.Length)

                {

                    MessageBox.Show("驗證通過");

                }

                else

                {

                    UpdateVerifyCode();

                    textBox1.Text = "";

                }

            ////不能驗證大小寫

            //if(textBox1.Text==strTemp)

            //{

            //    MessageBox.Show("驗證通過");

            //}

            //else

            //{

            //    UpdateVerifyCode();

            //    textBox1.Text = "";

            //}

        }

        /// <summary>

        /// 圖片點擊事件

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void pictureBox1_Click(object sender, EventArgs e)

        {

            UpdateVerifyCode();

        }

    }

}

Ⅳ 請問C語言驗證碼代碼怎麼打

用strcmp函數比較兩個字元串,你上圖一個生成的字元串,另一個輸入的字元串,把這兩個傳遞到函數里,函數返回0就說明兩個字元串相等,輸入正確,反之輸入錯誤。(頭文件導入string.h)。

Ⅵ 如何用c語言實現驗證碼的校驗

什麼校驗方法?
CRC檢驗如下:

#include<stdio.h>

int binaryToDec(char *str)
{
unsigned n=0;
while(*str!='\0')
{
if(*str<'0'||*str>'9')return -1;
n=n*2+(*str-'0');
str++;
}
return n;
}

void printBinary(int n)
{
if(n>1)printBinary(n/2);
printf("%d",n%2);
}

void main()
{
unsigned n,m,CRC=0x1A8000,fD=0x100000;
char CRC16[32];

while(1)
{
printf("輸入16位校驗碼:");
gets(CRC16);
n=binaryToDec(CRC16);
if(n>65535)
printf("輸入值過長,請重新輸入\n");
else break;
}

n<<=5;//n左移5位
m=n;//m等於n
while(fD>0x20)
{
while( !(m&fD) && !(CRC&1) )//保證被除數第一位為1
{
CRC>>=1;//除數右移一位
fD>>=1;//被除數首位的標志位右移一位
}
m=m^CRC;//被除數與除數相異或
}
n+=m;//模二餘數相加

printf("輸出21位校驗碼:");
printBinary(n);
printf("\n");

getchar();
}

熱點內容
新款賓士c級買哪個配置好 發布:2025-07-05 07:41:46 瀏覽:286
android長寬比 發布:2025-07-05 07:34:11 瀏覽:682
買新車有哪些隨車必須配置的東西 發布:2025-07-05 07:26:26 瀏覽:932
刷機的時候為什麼要密碼 發布:2025-07-05 07:25:43 瀏覽:433
快速計演算法怎麼算 發布:2025-07-05 07:08:12 瀏覽:141
php判斷數組長度 發布:2025-07-05 07:07:26 瀏覽:149
蘋果電腦取消共享文件夾 發布:2025-07-05 07:06:00 瀏覽:352
機器學習演算法應用 發布:2025-07-05 07:01:17 瀏覽:36
萬能解壓縮王 發布:2025-07-05 06:51:56 瀏覽:544
手機怎麼修改wifi密碼名稱 發布:2025-07-05 06:46:13 瀏覽:382