I made a clone of libraryofbabel.info, here's how I did it

Поділитися
Вставка
  • Опубліковано 23 жов 2024

КОМЕНТАРІ • 24

  • @Wanieru
    @Wanieru  4 роки тому +7

    Here's a footnote: Encryption algorithms usually take a key in addition to the input, which affects the exact way in which the plaintext is encrypted. With the Babel Algorithm, on the other hand, we want it to be the same every time, so there's no key neccessary, which is why I didn't mention keys (and IV's) in the video.

  • @AndreiDante
    @AndreiDante 4 роки тому +7

    I'm so amazed by this, imagine that everything is written there!
    Probably your entire life story is written there

  • @sdoti
    @sdoti 10 місяців тому

    dude this is so cool
    i love the story you added too
    underrated.

  • @astrosticks
    @astrosticks 4 роки тому +4

    This was really informative and well made! I should have guessed that the library of babel was just a hashing algorithm, since it perfectly matches the definition of one. Do you know why it's easier to crack than, say, MD5 for example?

    • @Wanieru
      @Wanieru  4 роки тому +6

      Thank you! I have a bit of a long response here about cracking encryption algorithms, hashing and the MD5 algorithm. It's important to emphasize that the Library of Babel and my version of it use an encryption algorithm, not a hashing algorithm. Let me highlight some of the important differences.
      A. Encryption algorithms typically define a procedure with no loss of data that is reversible (which I mention multiple times in the video), but use some sort of external key or initial configuration as part of the encryption. The algorithm naturally also defines how to decrypt a message using the key, which is not the same as cracking it. When talking about cracking an encrypted message, it is typically assumed that the attacker knows the encrypted message and the encryption algorithm, but not the key. They must in some way guess (or brute-force) the key. A perfect encryption algorithm has no other ways to be attacked than simply guessing the key, and the security then relies on the size and complexity of said key, making it impractical to ever crack the message.
      B. Hashing algorithms on the other hand fundamentally rely on data loss and collisions. Hashing algorithms typically have an infinite input space but a fixed output space. Of course, you want to minimize the amount of collisions (so that you can assume that each input produces a unique hash) but because the input space is infinite, it's guaranteed that there exists multiple inputs that produce the same output. Hashing algorithms are different from encryption algorithms, because they are designed to be one-way algorithms, whereas encryption algorithms are designed to be reversible. As I understand it, the reason they are one-way, is in part that the algoriothm is really compliclated, and in part that there is data loss built into the algorithm (imagine inputting the entire US Constitution into a hashing algorithm and getting back a 64-character string. There is no way to recover the input text from that short string, but it is also unlikely to find another input that produces that exact output).
      As for cracking the Babel Algorithm, there's really no cracking involved in the Library of Babel. Only encrypting and decrypting, with no key. I do mention that my algorithm, which acts like an encryption algorithm, is not cryptographically secure, which just means that it can easily be attacked in other ways than brute-forcing the key (in fact, there's no key built into the algorithm, so it fails spectacularly as an encryption algorithm).
      Finally, as you might know, MD5 isn't really used anymore. It's easy to search for an MD5 hash and find a website which gives you the original input, but it's important to remember that it's only one of infinite possible inputs that could have produced that hash. So it hasn't been "cracked" in the sense that all hashes are now reversible, people have just hashed just about everything they could think of and made a dictionary (also, you want hashing algorithms to be somewhat slow, so that brute forcing is difficult, but md5 is pretty fast with modern hardware). That being said, the reason MD5 isn't used anymore is the thing I said before about hashing algorithms being really complicated. MD5 has been analyzed and weaknesses have been found, allowing attackers to forge collisions. That means that if an attacker obtains a hash, they are able to craft an input which gives that hash. You can see this being a problem if you imagine a website hashing your password, and someone obtains the hash. Instead of brute forcing the input which gave the hash, they can just craft a brand new input with the same hash (an input different from your actual password) and login to your account using that, because they produce the same hash. Apparently, it's also possible to modify an input in a way, without changing the resulting hash, which is very dangerous. For example, if I download a file, the original distributor can give me a hash of the file to let me know that I got the file intact and that an attacker hasn't tampered with the file. But if they're able to change the file (for example adding malware to it) without changing the hash, that defeats the whole purpose of the so-called checksum.
      Anyways, I hope that answered whatever questions you have about MD5 and cracking of hashing and encryption algorithms.

    • @Synthwave89
      @Synthwave89 5 місяців тому

      ​@@WanieruI freaking love you. Are you a teacher by any chance? If not, you should. You are a fantastic teacher.

  • @vacuum558
    @vacuum558 4 роки тому +6

    Wow! I really like this project, can you share the source code with us?

  • @lucaayfmlyysiaejdsrtnnervd4646
    @lucaayfmlyysiaejdsrtnnervd4646 3 роки тому +4

    Could the source code for this program be released (and easy to access)?

  • @davannaleah
    @davannaleah 4 роки тому +2

    I wrote my own library in C#. It is a Windows app rather than an online app. I can email the installer to anyone who wants to play with it. It's 330k zip file so not too big. My version uses 32 characters so there is an exact one to one transformation from any address to a page and back again, something that Basile's implementation does not do.

    • @someoneinsane
      @someoneinsane 3 роки тому +1

      Do you have the source on GitHub?

  • @DrugsOnTV73
    @DrugsOnTV73 2 роки тому +1

    Great Video.

  • @P.L.T.M.Banana
    @P.L.T.M.Banana 2 роки тому +1

    the library of babel isn't working to me, do it works for you?

  • @user-th5vl6ef1l
    @user-th5vl6ef1l 3 роки тому +1

    nice video! :D and what about the babel image archives? how does it work? what happens when i upload an image? o.o

    • @PaulKruskamp
      @PaulKruskamp 3 роки тому +1

      It runs it through an algorithm (hash algorithm I think) that determines what unique locatuon (really just a number) it would be in based on its image data and tells you. But try to find that location before you upload, the ratio between real images and noise is so astronomically high, you'd spend several lifetimes looking. good luck.

  • @thepuppetqueen57
    @thepuppetqueen57 10 місяців тому

    I like the system you made with the hex names but my only complaint is that they are kinda annoying to type out.

    • @thepuppetqueen57
      @thepuppetqueen57 10 місяців тому

      I also don't like how long it takes to get to a file.

  • @SuperBakugan1
    @SuperBakugan1 3 роки тому

    I got that the 10 letter choice equals 50 bits because its 32 characters to the power of 10, which is 2^50, but how did you get 50 bits per choice with a 16 digit number?

    • @Wanieru
      @Wanieru  3 роки тому +1

      Indeed, the highest 16-digit number is 9999-9999-9999-9999, while the highest number represented by 50 bits is 1125-8999-0684-2623. So I simply don't allow inputting a number higher than that.

  • @frombadtoworse8043
    @frombadtoworse8043 4 роки тому +2

    has the site been taken down? Can't acces it...

  • @phoenixfront
    @phoenixfront 2 роки тому +2

    I know this is a bit late, but do you still have the code? If you do could you upload it to GitHub?