{"id":4724,"date":"2026-04-10T12:56:18","date_gmt":"2026-04-10T10:56:18","guid":{"rendered":"https:\/\/vielhuber.de\/?p=4724"},"modified":"2026-04-10T18:55:35","modified_gmt":"2026-04-10T16:55:35","slug":"code-in-primzahlen","status":"publish","type":"post","link":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/","title":{"rendered":"Code in Primzahlen"},"content":{"rendered":"<p id=\"p-rc_cc185669dad9bd78-93\">Im Oktober 1999 ver\u00f6ffentlichte eine Gruppe um den damals 16-j\u00e4hrigen Norweger Jon Lech Johansen das Programm <a href=\"https:\/\/de.wikipedia.org\/wiki\/DeCSS\" target=\"_blank\" rel=\"noreferrer noopener\">DeCSS<\/a>, um den DVD-Wiedergabeschutz Content Scramble System (CSS) zu umgehen. CSS nutzte eine 40-Bit-Verschl\u00fcsselung, deren Schl\u00fcssel an lizenzierte Hersteller ausgegeben wurden, um die Wiedergabe von DVDs zu beschr\u00e4nken. Da die Verbreitung des Codes unter den US-amerikanischen <a href=\"https:\/\/de.wikipedia.org\/wiki\/Digital_Millennium_Copyright_Act\" target=\"_blank\" rel=\"noreferrer noopener\">DMCA<\/a> fiel und gerichtlich untersagt wurde, suchten Aktivisten nach Wegen, den Code als mathematische Entit\u00e4t zu tarnen.<\/p>\n<p><!--more--><\/p>\n<p>Phil Carmody konstruierte daraufhin eine Primzahl, die bin\u00e4r interpretiert nach gzip-Dekompression den vollst\u00e4ndigen Quellcode von DeCSS enth\u00e4lt. Der Kern des DeCSS-Algorithmus l\u00e4sst sich in TypeScript wie folgt implementieren, wobei die Bit-Operationen direkt die Entschl\u00fcsselungslogik der Sektoren abbilden:<\/p>\n<pre class=\"wp-block-code\"><code class=\"language-typescript\">function CSSdescramble(sec: Uint8Array, key: Uint8Array): void {\n\u00a0\u00a0\u00a0\u00a0let t1: number, t2: number, t3: number, t4: number, t5: number, t6: number;\n\u00a0\u00a0\u00a0\u00a0const end = 0x800;\n\n\u00a0\u00a0\u00a0\u00a0t1 = (key[0] ^ sec[0x54]) | 0x100;\n\u00a0\u00a0\u00a0\u00a0t2 = key[1] ^ sec[0x55];\n\n\u00a0\u00a0\u00a0\u00a0const keyView = new DataView(key.buffer, key.byteOffset);\n\u00a0\u00a0\u00a0\u00a0const secView = new DataView(sec.buffer, sec.byteOffset);\n\n\u00a0\u00a0\u00a0\u00a0t3 = (keyView.getUint32(2, true) ^ secView.getUint32(0x56, true)) &gt;&gt;&gt; 0;\n\u00a0\u00a0\u00a0\u00a0t4 = t3 &amp; 7;\n\u00a0\u00a0\u00a0\u00a0t3 = (t3 * 2 + 8 - t4) &gt;&gt;&gt; 0;\n\n\u00a0\u00a0\u00a0\u00a0let offset = 0x80;\n\u00a0\u00a0\u00a0\u00a0t5 = 0;\n\n\u00a0\u00a0\u00a0\u00a0while (offset &lt; end) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t4 = CSStab2[t2] ^ CSStab3[t1];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t2 = t1 &gt;&gt;&gt; 1;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t1 = ((t1 &amp; 1) &lt;&lt; 8) ^ t4;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t4 = CSStab5[t4];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t6 = (((((((t3 &gt;&gt;&gt; 3) ^ t3) &gt;&gt;&gt; 1) ^ t3) &gt;&gt;&gt; 8) ^ t3) &gt;&gt;&gt; 5) &amp; 0xff;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t3 = (((t3 &lt;&lt; 8) &gt;&gt;&gt; 0) | t6) &gt;&gt;&gt; 0;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t6 = CSStab4[t6];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t5 += t6 + t4;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sec[offset] = CSStab1[sec[offset]] ^ (t5 &amp; 0xff);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t5 &gt;&gt;&gt;= 8;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0offset++;\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p id=\"p-rc_cc185669dad9bd78-94\">Das Prinzip hinter der Primzahl besteht darin, den gesamten Quellcode als eine einzige, massive Ganzzahl zu interpretieren. Da eine beliebige Datei selten eine Primzahl ist, wird die Zahl k\u00fcnstlich durch zus\u00e4tzliche Bytes (Padding) erweitert. In einer Schleife wird dieses Padding so lange inkrementiert, bis ein Primzahltest wie der <a href=\"https:\/\/de.wikipedia.org\/wiki\/Miller-Rabin-Test\" target=\"_blank\" rel=\"noreferrer noopener\">Miller-Rabin-Test<\/a> die Zahl als prim best\u00e4tigt. Der folgende Generator nutzt den oben beschriebenen DeCSS-Code und sucht nach einer entsprechenden Primzahl-Repr\u00e4sentation:<\/p>\n<pre class=\"wp-block-code\"><code class=\"language-typescript\">import { isPrime } from 'crypto-utils-lib'; \/\/ Hypothetical library for primality testing\n\nasync function generateIllegalPrime(code: string): Promise&lt;bigint | null&gt; {\n\u00a0\u00a0\u00a0\u00a0const encoder = new TextEncoder();\n\u00a0\u00a0\u00a0\u00a0const bytes = encoder.encode(code);\n\n\u00a0\u00a0\u00a0\u00a0let hexBase = Array.from(bytes)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.map(b =&gt; b.toString(16).padStart(2, '0'))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.join('');\n\n\u00a0\u00a0\u00a0\u00a0\/\/ Start bei 1, da 0x00 immer gerade und damit keine Primzahl ist\n\u00a0\u00a0\u00a0\u00a0for (let i = 1; i &lt; 256; i++) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const candidateHex = hexBase + i.toString(16).padStart(2, '0');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const candidateInt = BigInt('0x' + candidateHex);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (await isPrime(candidateInt)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return candidateInt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0return null;\n}\n\nconst source = `void CSSdescramble(unsigned char *sec, unsigned char *key) { ... }`;\ngenerateIllegalPrime(source).then(p =&gt; console.log(p));<\/code><\/pre>\n<p id=\"p-rc_cc185669dad9bd78-96\">Der Trick mit der Primzahl war nie Gegenstand eines eigenen Gerichtsverfahrens und musste es auch nicht sein. Obwohl Carmodys urspr\u00fcngliche Primzahl 1401 Stellen hatte, war sie f\u00fcr die damaligen Top-Listen der gr\u00f6\u00dften Primzahlen zu klein. Er erstellte sp\u00e4ter eine 1905-stellige Version, die k\u00fcnstlich durch Nullbytes aufgebl\u00e4ht wurde, um den zehnten Platz in der <a href=\"https:\/\/t5k.org\" target=\"_blank\" rel=\"noreferrer noopener\">ECPP-Rangliste<\/a> zu erreichen. Dieser Erfolg demonstrierte die Unm\u00f6glichkeit, reine Mathematik zu zensieren, da die Zahl ihren Platz in der Liste allein aufgrund ihrer mathematischen Eigenschaften verdiente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Oktober 1999 ver\u00f6ffentlichte eine Gruppe um den damals 16-j\u00e4hrigen Norweger Jon Lech Johansen das Programm DeCSS, um den DVD-Wiedergabeschutz Content Scramble System (CSS) zu umgehen. CSS nutzte eine 40-Bit-Verschl\u00fcsselung, deren Schl\u00fcssel an lizenzierte Hersteller ausgegeben wurden, um die Wiedergabe von DVDs zu beschr\u00e4nken. Da die Verbreitung des Codes unter den US-amerikanischen DMCA fiel und [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"gtbabel_prevent_lngs":"","gtbabel_alt_lng":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-4724","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-blog"},"acf":[],"yoast_head":"<title>Code in Primzahlen &#060; Vielhuber David<\/title>\n<meta name=\"description\" content=\"Im Oktober 1999 ver\u00f6ffentlichte eine Gruppe um den damals 16-j\u00e4hrigen Norweger Jon Lech Johansen das Programm DeCSS, um den DVD-Wiedergabeschutz Con...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Code in Primzahlen &#060; Vielhuber David\" \/>\n<meta property=\"og:description\" content=\"Im Oktober 1999 ver\u00f6ffentlichte eine Gruppe um den damals 16-j\u00e4hrigen Norweger Jon Lech Johansen das Programm DeCSS, um den DVD-Wiedergabeschutz Content\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/\" \/>\n<meta property=\"og:site_name\" content=\"Vielhuber David\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-10T10:56:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-10T16:55:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"552\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:site\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"David\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/code-in-primzahlen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/code-in-primzahlen\\\/\"},\"author\":{\"name\":\"David\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"headline\":\"Code in Primzahlen\",\"datePublished\":\"2026-04-10T10:56:18+00:00\",\"dateModified\":\"2026-04-10T16:55:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/code-in-primzahlen\\\/\"},\"wordCount\":276,\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"articleSection\":[\"Blog\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/code-in-primzahlen\\\/\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/code-in-primzahlen\\\/\",\"name\":\"Code in Primzahlen &#060; Vielhuber David\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\"},\"datePublished\":\"2026-04-10T10:56:18+00:00\",\"dateModified\":\"2026-04-10T16:55:35+00:00\",\"description\":\"Im Oktober 1999 ver\u00f6ffentlichte eine Gruppe um den damals 16-j\u00e4hrigen Norweger Jon Lech Johansen das Programm DeCSS, um den DVD-Wiedergabeschutz Content\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/code-in-primzahlen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vielhuber.de\\\/blog\\\/code-in-primzahlen\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/code-in-primzahlen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vielhuber.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Code in Primzahlen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/\",\"name\":\"Vielhuber David\",\"description\":\"Full-Stack Developer\",\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vielhuber.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\",\"name\":\"David\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"width\":700,\"height\":552,\"caption\":\"David\"},\"logo\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/vielhuber\"]}]}<\/script>","yoast_head_json":{"title":"Code in Primzahlen &#060; Vielhuber David","description":"Im Oktober 1999 ver\u00f6ffentlichte eine Gruppe um den damals 16-j\u00e4hrigen Norweger Jon Lech Johansen das Programm DeCSS, um den DVD-Wiedergabeschutz Con...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/","og_locale":"de_DE","og_type":"article","og_title":"Code in Primzahlen &#060; Vielhuber David","og_description":"Im Oktober 1999 ver\u00f6ffentlichte eine Gruppe um den damals 16-j\u00e4hrigen Norweger Jon Lech Johansen das Programm DeCSS, um den DVD-Wiedergabeschutz Content","og_url":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/","og_site_name":"Vielhuber David","article_published_time":"2026-04-10T10:56:18+00:00","article_modified_time":"2026-04-10T16:55:35+00:00","og_image":[{"width":700,"height":552,"url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","type":"image\/jpeg"}],"author":"David","twitter_card":"summary_large_image","twitter_creator":"@vielhuber","twitter_site":"@vielhuber","twitter_misc":{"Verfasst von":"David","Gesch\u00e4tzte Lesezeit":"2\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/#article","isPartOf":{"@id":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/"},"author":{"name":"David","@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"headline":"Code in Primzahlen","datePublished":"2026-04-10T10:56:18+00:00","dateModified":"2026-04-10T16:55:35+00:00","mainEntityOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/"},"wordCount":276,"publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"articleSection":["Blog"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/","url":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/","name":"Code in Primzahlen &#060; Vielhuber David","isPartOf":{"@id":"https:\/\/vielhuber.de\/#website"},"datePublished":"2026-04-10T10:56:18+00:00","dateModified":"2026-04-10T16:55:35+00:00","description":"Im Oktober 1999 ver\u00f6ffentlichte eine Gruppe um den damals 16-j\u00e4hrigen Norweger Jon Lech Johansen das Programm DeCSS, um den DVD-Wiedergabeschutz Content","breadcrumb":{"@id":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vielhuber.de\/blog\/code-in-primzahlen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vielhuber.de\/"},{"@type":"ListItem","position":2,"name":"Code in Primzahlen"}]},{"@type":"WebSite","@id":"https:\/\/vielhuber.de\/#website","url":"https:\/\/vielhuber.de\/","name":"Vielhuber David","description":"Full-Stack Developer","publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vielhuber.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef","name":"David","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","width":700,"height":552,"caption":"David"},"logo":{"@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg"},"sameAs":["https:\/\/x.com\/vielhuber"]}]}},"_links":{"self":[{"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/posts\/4724","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/comments?post=4724"}],"version-history":[{"count":12,"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/posts\/4724\/revisions"}],"predecessor-version":[{"id":4739,"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/posts\/4724\/revisions\/4739"}],"wp:attachment":[{"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/media?parent=4724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/categories?post=4724"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vielhuber.de\/hy\/wp-json\/wp\/v2\/tags?post=4724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}