Fully MQTT Based Cloud System

yeah sorry, my prgress got deleted... :sleepy:
i have to restart
and i'm sorry this is taking AGES but school is a pain
i can't ever get time to work on this...

I agree
I just finished school
P.S. you should save everytime you have to stop

i know, i do
i accidentally deleted the save though...

ah

The general answer is "computing h(x), where h (the hash function) is a function for which we don't know an inverse function." I imagine that elicits a "so what?" but there are two important use cases.

One is building a data structure called a hash table, for which both adding a new element and looking up an element take constant time, rather than the linear (O(n), where n is the number of elements) time for going through an array or list item by item like the Snap! FIND FIRST function or the logarithmic (O(log n)) time for going through various data structures in which the elements are sorted, so you can eliminate half the possibilities with one comparison. To build a hash table, you choose a hash function whose codomain, the set of possible result values, is smaller than the domain, the set of all the values you might want to hash. Typically, that means that you make an array of size N (big, but not as big as the size of the domain) and your hash function is (something) mod N. You put the new value x in a list in array[h(x)]. You have to be smart about the (something) part, depending on what kind of value you're trying to hash, to make sure you don't end up with a lot of values hashing to one specific h(x) bucket. In this application, what's important about the function h is that it spreads its inputs out pretty uniformly among the N possible values of h(x). For this reason, you typically pick a prime number N, not something like a power of two.

The other big application of hashing, the one these guys are talking about, is storing user passwords in a scrambled form, so that someone who somehow finds out the table of hashed passwords can't use it to find out anyone's unhashed (actual) password. When you log in using your password, the system computes h(what you enter) and if it finds that as the stored hashed password from when you created the account (or changed your password), it lets you in. For this application, what's important about h(x) is that it must really not be invertible, so the bad guys can't somehow compute your actual password from the hashed version. That's what this means:

... provided that you've picked a good hash function. Several historic hashed-password schemes have been cracked, including the original Unix password hash, because the people who implemented them were good computer scientists but not-so-good mathematicians. (Alas, I'm pretty sure this turns out to be true of Diffie-Hellman too, which is why the RSA people got rich with their better hash.)

@codegang progress update in smerge

"I once asked an NSA guy whether they'd broken RSA. And I know I can trust him, because I asked if he was lying to me and he said no."

~ xkcd #343

can you explain that in block form so I could use it

Wiki

As estimated by the authors... Logjam attack, the... precomputation needed to solve the discrete log problem for a 1024-bit prime would cost on the order of $100 million

Yeah, I guess this is why they use 1024-bit these days. I remember 256-bit!

https://snap.berkeley.edu/project?username=spaceelephant&projectname=hashtables

https://snap.berkeley.edu/project?username=joecooldoo&projectname=Encryption%20%26%20Hashing

man i'mma just go back to the simpler times
8 bits :skull:

i added @joecooldoo 's hashing library
dont change anything to the smerge project

okay

dont use that
use untitled script pic (3) from dev mode

ok
ill tell @specialred

done
thanks

well that was a crisis deverted

check smerge