LUA 字符串密码格式校验
最近工作中遇到需要使用LUA脚本进行字符串的密码校验,利用业余时间进行下总结:
1、Ubuntu下安装LUA,只需要一个执行udo apt-get install lua5.2即可,本来想安装5.3,但是失败了,所以只安装了5.2:
2、先简单写个LUA脚本,实验下是否好用:
3、然后执行lua ./checkpass.lua查看结果:
4、接下来补充完整的校验密码函数(格式要求是只能输入8为16进制密码)
5、进行简单的密码验证:
6、下面对代码中使用的LUA进行简单的介绍
6.1 数字型for(numeric for)
for var=exp1,exp2,exp3 do
<执行体>
end
var 从exp1变化到exp2,每次变化都以exp3作为步长(step)递增var,执行一次执行体。
第三个表达式exp3可选,若不指定的话,Lua会将步长默认为1
例如:for i=1,f(x) do print(i) end
for i=10,1,-1 do print(i) end
注意:for循环的3个表达式是在循环开始前一次性求值的。
6.2 泛型for(generic for)
泛型for循环通过一个迭代器(iterator)函数来遍历所有值:
例如1:打印数组a的所有值
for i,v in ipairs(a) do
print(v)
end
Lua基础库提供了ipairs,这是一个用于遍历数组的迭代器。在每次for循环中,i会被赋予一个索引值,同时v被赋予一个对应于该索引的数组元素值。
例如2:打印table t中所有的key
for k in pairs(t) do
print(k)
end
从外观看泛型for比较简单,但其实它是非常强大的。通过不同的迭代器,几乎可以便利所有的东西。
标准库提供了几种迭代器,包括用于迭代文件中每行的(io.liens)、迭代table元素的(pairs)、迭代数组的(ipairs)、迭代字符串中单词的(string.match)等
7、LUA中的字符串
字符串长度:string.len(s)
将一个字符重复N遍:string.rep(s,n) 或 s:rep(n)
将字符串转换成大写:string.upper(s)
将字符串转换成小写:string.lower(s)
从字符串s中提取第i个到第j个字符:string.sub(s,i,j)
string.char接受零个或多个整数,并将每个整数转换成对应的字符,然后返回一个由这些字符连接而成的字符串。
string.char(97,98,99) = abc
string.byte(s,i)返回字符串s中第i个字符的内部数值表示,第二个参数是可选的,调用string.byte(s)可返回字符串s中第一个字符的内部数值表示。
string.byte("abc",2) = 98
string.byte("abc") = 97
string.byte("abc",-1) = 99