把开源的一个两步验证写成aardio格式了,抛砖引玉,希望aardio生态越来越好。
Code AardioLine:82 复制
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. namespace
kio;import
com
;import
dotNet;import
System;namespace
otp { dll = ..dotNet.loadFile($ "~\lib\kio\otp\Otp.NET.dll"
); base = dll.import
("OtpNet"
); Base32 = function
() { return
base.Base32Encoding(); } Hotp = function
(secretKey, mode = 0
, totpSize = 6
) { return
base.Hotp(Base32().ToBytes(secretKey), mode, totpSize); } Totp = function
(secretKey, step = 30
, mode = 0
, totpSize = 6
) { return
base.Totp(Base32().ToBytes(secretKey), step, mode, totpSize); } VerificationWindow = function
(previous = 0
, future = 0
) { return
base.VerificationWindow(previous, future); } OtpUri=function
(secrt,user,issuer,otptype=0
,mode=0
,digits=6
,period=30
,couner=0
){ return
base.OtpUri(otptype,secrt,user,issuer,mode,digits,period,couner); } GenerateRandomKey=function
(mode = 0
){ select
(mode) { case
2
{ mode=64
; } case
1
{ mode=32
; } else
{ mode=20
; } } return
base.Base32Encoding().ToString
(base.KeyGeneration.GenerateRandomKey(mode)); } } ,0,6
,30
,0)=创建OtpUri\n!OtpUri. OtpUri("__"
,"user"
)=创建OtpUri,默认totp,sha1,6
,30
\n!OtpUri. Totp()=!Totp. Hotp()=!Hotp. OtpUri()=!OtpUri. end
intellisense**/)=验证码\n参数1
:整数,计数器 VerifyHotp("__"
,0
)=验证,通过返回true
\n参数1
:字符串,待验证的码\n参数2
:整数,计数器 end
intellisense**/ 附件含有demo演示,可以下载查看
用法:kio整个文件夹解压到lib
上传的附件: