博客
关于我
用C#生成随机中文汉字验证码的基本原理
阅读量:345 次
发布时间:2019-03-04

本文共 4675 字,大约阅读时间需要 15 分钟。

???????????????????

???????????????????????????????????????????????????????????????????????????????????????????????????????

1980??????????????????????GB2312-80?????????????????????GB18030-2000????????????????????????GB2312-1980?GB13000-1993?????????????????????????????GB18030?????Windows?????????????????????????????GB2312?????????????????????????????????????????????GB2312?????????????????????????????????????????????????????

??????????????????????????????????????????????????GB2312???????????????????ba c3???ba?????c3?????????????????????15??AF??????????????????????16??B0???????GB2312?????????

?.NET??????????????System.Text??????Encoding???????????????????????????????Encoding.GetBytes()????????????????Encoding.GetString()??????????????????????GB2312?????????????????????

using System;using System.Text;namespace ConsoleApplication{    class ChineseCode    {        public static object[] CreateRegionCode(int strlength)        {            string[] rBase = new string[16];            Random rnd = new Random((DateTime.Now.Ticks) + i);                        object[] bytes = new object[strlength];                        for (int i = 0; i < strlength; i++)            {                int r1 = rnd.Next(11, 14);                string str_r1 = rBase[r1].Trim();                int r2 = rnd.Next(0, 7);                if (r1 == 13)                {                    r2 = rnd.Next(0, 16);                }                else if (r1 == 15)                {                    r2 = rnd.Next(0, 16);                }                else                {                    r2 = rnd.Next(0, 16);                }                string str_r2 = rBase[r2].Trim();                                byte byte1 = Convert.ToByte(str_r1 + str_r2, 16);                byte byte2 = Convert.ToByte(str_r3 + str_r4, 16);                                byte[] str_r = new byte[] { byte1, byte2 };                bytes.SetValue(str_r, i);            }            return bytes;        }                public static void Main()        {            Encoding gb = Encoding.GetEncoding("gb2312");            object[] bytes = CreateRegionCode(4);                        string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));            string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));            string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));            string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));                        Console.WriteLine(str1 + str2 + str3 + str4);        }    }}

??????????????????????????????GetString()???????????????????????????????????????????

?????????C#????????

using System;using System.Text;namespace ConsoleApplication{    class ChineseCode    {        public static object[] CreateRegionCode(int strlength)        {            string[] rBase = new string[16];            Random rnd = new Random((DateTime.Now.Ticks) + i);                        object[] bytes = new object[strlength];                        for (int i = 0; i < strlength; i++)            {                int r1 = rnd.Next(11, 14);                string str_r1 = rBase[r1].Trim();                int r2 = rnd.Next(0, 7);                if (r1 == 13)                {                    r2 = rnd.Next(0, 16);                }                else if (r1 == 15)                {                    r2 = rnd.Next(0, 16);                }                else                {                    r2 = rnd.Next(0, 16);                }                string str_r2 = rBase[r2].Trim();                                byte byte1 = Convert.ToByte(str_r1 + str_r2, 16);                byte byte2 = Convert.ToByte(str_r3 + str_r4, 16);                                byte[] str_r = new byte[] { byte1, byte2 };                bytes.SetValue(str_r, i);            }            return bytes;        }                public static void Main()        {            Encoding gb = Encoding.GetEncoding("gb2312");            object[] bytes = CreateRegionCode(4);                        string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));            string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));            string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));            string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));                        Console.WriteLine(str1 + str2 + str3 + str4);        }    }}

????????????????????????????????????????????????GB2312?????????????????????????B?C?D???????????????????

????????????????????????????????????????????????

转载地址:http://wfje.baihongyu.com/

你可能感兴趣的文章
PGSQL主键序列
查看>>
PGSQL安装PostGIS扩展模块
查看>>
pg数据库中两个字段相除
查看>>
PhalApi:[1.23] 请求和响应:GET和POST两者皆可得及超越JSON格式返回
查看>>
Phalcon环境搭建与项目开发
查看>>
Phantom.js维护者退出,项目的未来成疑
查看>>
Pharmaceutical的同学们都看过来,关于补码运算的复习相关内容
查看>>
Phaser性能测试加强版
查看>>
phoenix 开发API系列(一)创建简单的http api
查看>>
Phoenix 查看表信息及修改元数据
查看>>
phoenixframework集成了所有自动化测试的思想的平台。mark一下。
查看>>
phoenix_执行sql报错_Error: ERROR 504 (42703): Undefined column. columnName=(state=4270_大数据工作笔记0181
查看>>
phoenix启动失败_The history file `/root/.sqlline/history` may be an older history---记录024_大数据工作笔记0184
查看>>
Phoenix基础命令_视图映射和表映射_数字存储问题---大数据之Hbase工作笔记0036
查看>>
phoenix无法连接hbase shell创建表失败_报错_PleaseHoldException: Master is initializing---记录020_大数据工作笔记0180
查看>>
Phoenix简介_安装部署_以及连接使用---大数据之Hbase工作笔记0035
查看>>
phoenix连接hbase报错Can not resolve hadoop120, please check your network_记录026---大数据工作笔记0187
查看>>
PhotoPrism:这款获得35.8K星的AI照片管理神器你值得拥有
查看>>
Photoshop工作笔记001---Photoshop常用快捷键总结
查看>>
photoshop智能参考线
查看>>