Branch
Hash :
5fc757b0
Author :
Thomas de Grivel
Date :
2025-12-20T00:49:14
wip totp
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
HOTP.value(secret, 3)
require Base32
Base32.encode("abcdef")
require Base32
Base32.encode("abcdef")
Base32.encode("123456789")
bc
32 * 8
255/32
255 / 32
257 / 32
256 / 32
255 / (32 * 8)
255 / (32 * 7)
255 / (32 * 6)
255 / (32)
256 / (32)
256 / 32
log2(32)
8 ** 4
2 ** 4
2 ** 5
require Base32
Base32.encode("123456789")
Base32.encode("")
Base32.encode("0")
require Base32
Base32.encode("0")
Base32.encode("f")
Base32.encode("fo")
Base32.encode("foobar")
require Base32
Base32.encode("foobar")
Base32.decode(Base32.encode("foobar"))
require Base32
Base32.decode(Base32.encode("foobar"))
Str.random_base64(3)
Str.random_base32(3)
Str.random_base32(32)
Str.random_base32(16)
Str.size(Str.random_base32(16))
Str.random_base32(16)
list = Facts.collect_with(Config.db, [[id = ?, :is_a, :user], [id, :user_totp_secret, ""]]
)
require QREncode
QREncode
QREncode.encode("1234")
QREncode.encode_png("1234")
require QREncode
QREncode.encode_png("1234")
QREncode.encode_png("1234", 64)
QREncode.encode_png("1234", 128)
QREncode.encode_png("1234", 1)
QREncode.encode_png("1234", 2)
QREncode.encode_png("1234", 8)
QREncode.encode_png("1234", 16)
QREncode.encode_png("1", 16)
QREncode.encode_png("1", 1)
QREncode.encode_png("1", 2)
QREncode.encode_png("1", 4)
QREncode.encode_png("1", 8)
QREncode.encode_png("1", 16)
require QREncode
QREncode.encode_png("1", 64)
QREncode.encode_png("1", 32)
QREncode.encode_png("1", 1)
str = QREncode.encode_png("1", 128)
require File
File.write_str("test.png", str)
require QREncode
str = QREncode.encode_png("1", 128)
require File
File.write_str("test.png", str)
File.write_str("test.png", QREncode.encode_png("1", 1))
File.write_str("test.png", QREncode.encode_png("http://123.com/", 1))
File.write_str("test.png", QREncode.encode_png("http://123.com/", 128))
require QREncode
require File
File.write_str("test.png", QREncode.encode_png("http://123.com/", 128))
require QREncode
require File
File.write_str("test.png", QREncode.encode_png("http://123.com/", 128))
require QREncode
require File
File.write_str("test.png", QREncode.encode_png("http://123.com/", 128))
File.write_str("test.png", QREncode.encode_png("http://test.com/", 128))
require QREncode
require File
File.write_str("test.png", QREncode.encode_png("http://test.com/", 128))
File.write_str("test.png", QREncode.encode_png("http://test.com/", 256))
require Base64
Base64.encode("1234")
Base64.encode("1")
Base64.encode("1234abcd")
require Base64
Base64.decode("iVBORw0KGgoAAAANSUhEUgAAADEAAAAxCAAAAABW9x7AAAACC0lEQVRIiZ2WwZLjQAhDn1L-_1_WHkCAs6eJx5XYjhsQEuoRdRhkAJQ7YeF6YmTVmx9-OGwbGzAGG-rkXICxbfMAlRtXPcJVmc771pT396oeNi8dXR2S6obn3nelbVy1kj_-u0-QPXSwoEKG1V2u4-845D47QyFpUGETuRtFvr_6Or-iKspb4omepYWgUznxZ42nAJr26o3rKgqo-3rtMajiaKucLkZ-xb8ONCKvSVgSc2XKfcdIhyb2XlcfD1brF7W7VDzoS_kL-lVkWjDDELlNpzpIP1x12VeIm2SE-Gr8B6wGZRmJdLmg97wvc2G0ufWrV7pfWvcYPvLpDbgQBpX8JcouyFtYUTJ8Nx9KEqkXruhVKupIGokGTefJDO5iZ5hGOl4yX-zyRvaj-yg9rMauxy52ejIVHCmytXzpORNRMR--6Jvl2630t5bfHJmT404bn_zwu-_uILPKi9-UVIQl86wgFNOsQZVnWTYGZdIyg28uOZ6wA7h8eBBX6zxgWXLk5qOdsStZXtb5Uy7Ax2neGJwEMlYt7KmMQ858ZCg6x1KH52RU4jRkzToCf2tl5HEJjrt6HX6tQQDPyESOT5zIM1iaXTRKrBrLirUj77QkKEOA4-wOgXkpT9ddWgNjVFPI3XXvoefiDruzHcYgTre8_zOMFSr7ZcQ8nFvAM8iyz6tpVarG0REg_gGYrASS-gBDkwAAAABJRU5ErkJggg")
File.write_str("test.png", Base64.decode("iVBORw0KGgoAAAANSUhEUgAAADEAAAAxCAAAAABW9x7AAAACC0lEQVRIiZ2WwZLjQAhDn1L-_1_WHkCAs6eJx5XYjhsQEuoRdRhkAJQ7YeF6YmTVmx9-OGwbGzAGG-rkXICxbfMAlRtXPcJVmc771pT396oeNi8dXR2S6obn3nelbVy1kj_-u0-QPXSwoEKG1V2u4-845D47QyFpUGETuRtFvr_6Or-iKspb4omepYWgUznxZ42nAJr26o3rKgqo-3rtMajiaKucLkZ-xb8ONCKvSVgSc2XKfcdIhyb2XlcfD1brF7W7VDzoS_kL-lVkWjDDELlNpzpIP1x12VeIm2SE-Gr8B6wGZRmJdLmg97wvc2G0ufWrV7pfWvcYPvLpDbgQBpX8JcouyFtYUTJ8Nx9KEqkXruhVKupIGokGTefJDO5iZ5hGOl4yX-zyRvaj-yg9rMauxy52ejIVHCmytXzpORNRMR--6Jvl2630t5bfHJmT404bn_zwu-_uILPKi9-UVIQl86wgFNOsQZVnWTYGZdIyg28uOZ6wA7h8eBBX6zxgWXLk5qOdsStZXtb5Uy7Ax2neGJwEMlYt7KmMQ858ZCg6x1KH52RU4jRkzToCf2tl5HEJjrt6HX6tQQDPyESOT5zIM1iaXTRKrBrLirUj77QkKEOA4-wOgXkpT9ddWgNjVFPI3XXvoefiDruzHcYgTre8_zOMFSr7ZcQ8nFvAM8iyz6tpVarG0REg_gGYrASS-gBDkwAAAABJRU5ErkJggg"))
require File
File.write_str("test.png", Base64.decode("iVBORw0KGgoAAAANSUhEUgAAADEAAAAxCAAAAABW9x7AAAACC0lEQVRIiZ2WwZLjQAhDn1L-_1_WHkCAs6eJx5XYjhsQEuoRdRhkAJQ7YeF6YmTVmx9-OGwbGzAGG-rkXICxbfMAlRtXPcJVmc771pT396oeNi8dXR2S6obn3nelbVy1kj_-u0-QPXSwoEKG1V2u4-845D47QyFpUGETuRtFvr_6Or-iKspb4omepYWgUznxZ42nAJr26o3rKgqo-3rtMajiaKucLkZ-xb8ONCKvSVgSc2XKfcdIhyb2XlcfD1brF7W7VDzoS_kL-lVkWjDDELlNpzpIP1x12VeIm2SE-Gr8B6wGZRmJdLmg97wvc2G0ufWrV7pfWvcYPvLpDbgQBpX8JcouyFtYUTJ8Nx9KEqkXruhVKupIGokGTefJDO5iZ5hGOl4yX-zyRvaj-yg9rMauxy52ejIVHCmytXzpORNRMR--6Jvl2630t5bfHJmT404bn_zwu-_uILPKi9-UVIQl86wgFNOsQZVnWTYGZdIyg28uOZ6wA7h8eBBX6zxgWXLk5qOdsStZXtb5Uy7Ax2neGJwEMlYt7KmMQ858ZCg6x1KH52RU4jRkzToCf2tl5HEJjrt6HX6tQQDPyESOT5zIM1iaXTRKrBrLirUj77QkKEOA4-wOgXkpT9ddWgNjVFPI3XXvoefiDruzHcYgTre8_zOMFSr7ZcQ8nFvAM8iyz6tpVarG0REg_gGYrASS-gBDkwAAAABJRU5ErkJggg"))