加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用纯Perl语言(不需要任何模块)编写生成验证码图片的程序

发布时间:2020-12-15 21:04:17 所属栏目:大数据 来源:网络整理
导读:使用纯Perl语言(不需要任何模块)编写生成验证码图片的程序,完整代码如下: #!/usr/bin/perl open (FILE,'','image.png'); binmode (FILE); print FILE bmpNum (myrand(9999)); close (FILE); sub bmpNum{ my $verifynum=shift; local @n0 = ("3c","66","3

使用纯Perl语言(不需要任何模块)编写生成验证码图片的程序,完整代码如下:

#!/usr/bin/perl


open (FILE,'>','image.png');
binmode (FILE);
print FILE &bmpNum (&myrand(9999));
close (FILE);

sub bmpNum{
my $verifynum=shift;
local @n0 = ("3c","66","3c");
local @n1 = ("1c","0c","1c","0c");
local @n2 = ("7e","60","30","18","06","3c");
local @n3 = ("3c","3c");
local @n4 = ("1e","7e","4c","2c","0c");
local @n5 = ("3c","7c","7e"); local @n6 = ("3c","1c"); local @n7 = ("30","7e"); local @n8 = ("3c","3c","3c"); local @n9 = ("38","3e","3c"); for (my $i = 0; $i < 10; $i++) { for (1 .. 6) { ??? my $a1 = substr("012",int(myrand(3)),1) . substr("012345",int(myrand(6)),1); ??? my $a2 = substr("012345",1) . substr("0123",int(myrand(4)),1); ??? int(myrand(2)) eq 1 ? push(@{"n$i"},$a1) : unshift(@{"n$i"},$a1); ??? int(myrand(2)) eq 0 ? push(@{"n$i"},$a2); } } my @bitmap = (); for (my $i = 0; $i < 20; $i++) { for (my $j = 0; $j < 4; $j++) { ??? my $n = substr($verifynum,$j,1); ??? my $bytes = ${"n$n"}[$i]; ??? my $a = int(myrand(15)); ??? $a eq 1 ? $bytes =~ s/9/8/g : $a eq 3 ? $bytes =~ s/c/e/g : $a eq 6 ? $bytes =~ s/3/b/g : $a eq 8 ? $bytes =~ s/8/9/g : $a eq 0 ? $bytes =~ s/e/f/g : 1; ??? push(@bitmap,$bytes); } } for ($i = 0; $i < 8; $i++) { my $a = substr("012",1); unshift(@bitmap,$a); push(@bitmap,$a); } my $image = '424d9e000000000000003e0000002800'; $image .= "00002000000018000000010001000000"; $image .= "00006000000000000000000000000000"; $image .= "00000000000000000000FFFFFF00"; $image .= join('',@bitmap); $image = pack ('H*',$image); return $image; } sub myrand { ??? my $max = shift; ??? my $result; ??? my $randseed = $LBCGI::randseed ; ??? $max ||= 1; ??? eval("$result = rand($max);"); ??? return $result unless ($@); ??? $randseed = time unless ($randseed); ??? my $x = 0xffffffff; ??? $x++; ??? $randseed *= 134775813; ??? $randseed++; ??? $randseed %= $x; ??? return $randseed * $max / $x; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读