SkillAgentSearch skills...

Lrc4

Native Lua / LuaJIT RC4 stream cipher library

Install / Use

/learn @cheyilin/Lrc4
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

lrc4

ci-dev

Native Lua/LuaJIT RC4 stream cipher library

Lua Compatibility

| Version | Module Dependencies | Remark | | ------- | ------------------- | ------ | | Lua 5.2 (PUC) | bit32 | | | Lua 5.3 (PUC) | | Native bitwise op | | Lua 5.4 (PUC) | | Native bitwise op | | LuaJIT 2.0 | ffi, bit | ffi C struct optimized | | LuaJIT 2.1 (OpenResty) | ffi, bit | ffi C struct optimized |

Usage

local rc4 = require("rc4")
local key = "my_secret"

-- generate keystream
local rc4_ks_server = rc4(key)
local rc4_ks_client = rc4(key)

-- server encrypts messages
local msg_from_server_1 = "Hello"
local msg_from_server_2 = "This is SERVER"
local encrypted_msg_1 = rc4_ks_server(msg_from_server_1)
local encrypted_msg_2 = rc4_ks_server(msg_from_server_2)

-- client decrypts messages one after another
local decrypted_msg_1 = rc4_ks_client(encrypted_msg_1)
assert(msg_from_server_1 == decrypted_msg_1)
local decrypted_msg_2 = rc4_ks_client(encrypted_msg_2)
assert(msg_from_server_2 == decrypted_msg_2)

Test and Benchmark

# Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
$ lua52 rc4.lua
RC4 keygen test     5.014 sec (100000 times, #key 8)
RC4 crypt test     40.658 sec (100000 times, #key 8, #input 512)

# Lua 5.3.6  Copyright (C) 1994-2020 Lua.org, PUC-Rio
$ lua53 rc4.lua
RC4 keygen test     4.755 sec (100000 times, #key 8)
RC4 crypt test     35.481 sec (100000 times, #key 8, #input 512)

# Lua 5.4.3  Copyright (C) 1994-2021 Lua.org, PUC-Rio
$ lua54 rc4.lua
RC4 keygen test     4.353 sec (100000 times, #key 8)
RC4 crypt test     31.206 sec (100000 times, #key 8, #input 512)

# LuaJIT 2.0.5 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/
$ luajit-2.0 rc4.lua
RC4 keygen test     0.187 sec (100000 times, #key 8)
RC4 crypt test      0.492 sec (100000 times, #key 8, #input 512)

# LuaJIT 2.1.0-beta3 -- Copyright (C) 2005-2021 Mike Pall. https://luajit.org/
$ luajit-2.1 rc4.lua
RC4 keygen test     0.166 sec (100000 times, #key 8)
RC4 crypt test      0.443 sec (100000 times, #key 8, #input 512)

License

Copyright (c) 2015-2021 Cheyi Lin. MIT licensed. See LICENSE for details.

Related Skills

View on GitHub
GitHub Stars11
CategoryDevelopment
Updated1y ago
Forks11

Languages

Lua

Security Score

75/100

Audited on Mar 22, 2025

No findings