BUILD 01
This commit is contained in:
commit
9e6160daff
|
@ -0,0 +1,32 @@
|
|||
Simple Cipher Mod v1.0
|
||||
By Leslie E. Krause
|
||||
|
||||
Simple Cipher is a lightweight, portable hashing algorithm providing a minimal degree
|
||||
of security for non mission-critical data (e.g. unique, non-guessable URLs).
|
||||
|
||||
|
||||
Source Code License
|
||||
----------------------
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016-2019, Leslie E. Krause.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
software and associated documentation files (the "Software"), to deal in the Software
|
||||
without restriction, including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more details:
|
||||
https://opensource.org/licenses/MIT
|
|
@ -0,0 +1,57 @@
|
|||
#!/bin/awk -f
|
||||
|
||||
function ord_init( _low, _high, _i, _t )
|
||||
{
|
||||
_low = 0;
|
||||
_high = 127;
|
||||
for( _i = _low; _i <= _high; _i++ ) {
|
||||
_t = sprintf( "%c", _i );
|
||||
ord_data[ _t ] = _i;
|
||||
}
|
||||
}
|
||||
|
||||
function ord( _s, _i )
|
||||
{
|
||||
return ord_data[ substr( _s, _i, 1 ) ]
|
||||
}
|
||||
|
||||
function chr( _c )
|
||||
{
|
||||
return sprintf( "%c", _c );
|
||||
}
|
||||
|
||||
function getToken( idx, _alphabet, _str, _base )
|
||||
{
|
||||
_alphabet = "7pdy3jbhvms5zxrftnc9gqw";
|
||||
_base = length( _alphabet );
|
||||
|
||||
idx += 4294836226;
|
||||
while( idx > 0 ) {
|
||||
_str = _str substr( _alphabet, idx % _base + 1, 1 );
|
||||
idx = int( idx / _base );
|
||||
}
|
||||
|
||||
return _str;
|
||||
}
|
||||
|
||||
function getChecksum( input, _a, _b, _hash, _idx )
|
||||
{
|
||||
_a = 378551;
|
||||
_b = 63689;
|
||||
_hash = 0;
|
||||
_i = 0;
|
||||
|
||||
for( _i = 0; _i < length( input ); _i++ ) {
|
||||
_hash = ( _hash * _a + ord( input, _i + 1 ) ) % 2147483648;
|
||||
_a = ( _a * _b ) % 65536;
|
||||
}
|
||||
return 4294967295 - _hash;
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
ord_init( );
|
||||
|
||||
x = "sorcerykid";
|
||||
print getChecksum( x ) "->" getToken( getChecksum( x ) )
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
--------------------------------------------------------
|
||||
-- Minetest :: Simple Cipher Mod v1.0 (cipher)
|
||||
--
|
||||
-- See README.txt for licensing and other information.
|
||||
-- Copyright (c) 2016-2019, Leslie E. Krause
|
||||
--
|
||||
-- ./games/just_test_tribute/mods/cipher/init.lua
|
||||
--------------------------------------------------------
|
||||
|
||||
-- alphabet soup to be used by the tokenizer
|
||||
local alphabet = "pdy3jbh7vms5zxrftnc9gqw"
|
||||
|
||||
cipher = { }
|
||||
|
||||
cipher.tokenize = function ( hash )
|
||||
local base = #alphabet
|
||||
local str = ""
|
||||
|
||||
hash = hash + 4294836226
|
||||
|
||||
while hash > 0 do
|
||||
local idx = hash % base + 1
|
||||
str = str .. string.sub( alphabet, idx, idx )
|
||||
hash = math.floor( hash / base )
|
||||
end
|
||||
|
||||
return str
|
||||
end
|
||||
|
||||
cipher.get_checksum = function ( input )
|
||||
local a = 378551
|
||||
local b = 63689
|
||||
local hash = 0
|
||||
local i = 0
|
||||
|
||||
for i = 1, #input do
|
||||
hash = ( hash * a + string.byte( input, i ) ) % 2147483648
|
||||
a = ( a * b ) % 65536
|
||||
end
|
||||
|
||||
return 4294967295 - hash
|
||||
end
|
||||
|
||||
if cipher.tokenize( cipher.get_checksum( "sorcerykid" ) ) ~= "gfwd9pmd" then
|
||||
-- basic sanity check upon startup
|
||||
error( "[cipher] Failed to generate correct token from hash!" )
|
||||
end
|
Loading…
Reference in New Issue