Why The Right Semantics Is Important,

I've met tech people on social media websites, that have this idea their concept of how tech works is gospel, only for them to reveal themselves not having basic programming distinctions:

 

A hash index (also called a codebook), creates a dictionary of things.

=>

a = {

  "A" => "1", "B" => "2", # And so on.

}

 

A cryptography hash is a constant, similar in a way to a letter or a number. => e10adc3949ba59abbe56e057f20f883e

 

This is why I think eventually we may need to find a different word for the two concepts, because they can become confusing. It's easy to engineer something that undoes a value from a hash index, but purely impossible to undo a value created from a cryptographic hash function.

This is why I prefer the term one way function, as it's more specific what we mean in cryptography. But even then a can be created that completely rewrites how something is a one way function, but finding a work around for the problem.

I created a one way function a month ago that was this thing that seemed apparently like a One Way Function, it's a cipher based on the Tesla Frequeny. Recently when I analyzed it again, it turns out it wasn't actually a one way function, but a kind of super encipherment:

Mutiply the value of the plaintext 2^3*0.87*0.714285714 in order to get the ciphertext. Now simply subtract the original plaintext from the ciphertext to get your key.

In order to return to plaintext, subtract the key value from the ciphertext.

It thus turns it into something no more secure than a monoalphabet cipher.

When you're dealing with this revolving around math, especially when you're making systems others depend on, you can't afford to make semantic confusions between a codebook and a one way function. Otherwise you end up having something apparently unbreakable, that turns out to be extremely weak later on.

At least for me I'm able to eliminate that distinction, before I make more chat bots.