Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  aes_calc.c   Sprache: C

 
/*
 * aes_calc.c
 *
 * A simple AES calculator for generating AES encryption values
 *
 * David A. McGrew
 * Cisco Systems, Inc.
 */


/*
 *
 * Copyright (c) 2001-2017, Cisco Systems, Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 *
 *   Redistributions in binary form must reproduce the above
 *   copyright notice, this list of conditions and the following
 *   disclaimer in the documentation and/or other materials provided
 *   with the distribution.
 *
 *   Neither the name of the Cisco Systems, Inc. nor the names of its
 *   contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */


/*

 Example usage (with first NIST FIPS 197 test case):

 [sh]$ test/aes_calc 000102030405060708090a0b0c0d0e0f \
       00112233445566778899aabbccddeeff -v

 plaintext:      00112233445566778899aabbccddeeff
 key:            000102030405060708090a0b0c0d0e0f
 ciphertext:     69c4e0d86a7b0430d8cdb78070b4c55a

 */


#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include "aes.h"
#include <stdio.h>
#include <string.h>
#include "util.h"

void usage(char *prog_name)
{
    printf("usage: %s [<ciphertext>] [-v]\n"</span>,&nbsp;prog_name);<br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>exit</span>(255);<br> }<br> <br> <span style='color:turquoise'>#define</span>&nbsp;AES_MAX_KEY_LEN&nbsp;32<br> <br> <span style='color:red'>int</span>&nbsp;main(<span style='color:red'>int</span>&nbsp;argc,&nbsp;<span style='color:red'>char</span>&nbsp;*argv[])<br> {<br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>const</span>&nbsp;<span style='color:red'>char</span>&nbsp;*expected_ciphertext&nbsp;=&nbsp;NULL;<br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>const</span>&nbsp;<span style='color:red'>char</span>&nbsp;*ciphertext&nbsp;=&nbsp;NULL;<br> &nbsp;&nbsp;&nbsp;&nbsp;v128_t&nbsp;data;<br> &nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;key[AES_MAX_KEY_LEN];<br> &nbsp;&nbsp;&nbsp;&nbsp;srtp_aes_expanded_key_t&nbsp;exp_key;<br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>int</span>&nbsp;key_len,&nbsp;len;<br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>int</span>&nbsp;verbose&nbsp;=&nbsp;0;<br> &nbsp;&nbsp;&nbsp;&nbsp;srtp_err_status_t&nbsp;status;<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;-v&nbsp;must&nbsp;be&nbsp;last&nbsp;if&nbsp;it's&nbsp;passed&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(argc&nbsp;&gt;&nbsp;0&nbsp;&&&nbsp;strncmp(argv[argc&nbsp;-&nbsp;1],&nbsp;<span style='color:blue'>"-v"</span>,&nbsp;2)&nbsp;==&nbsp;0)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;we're&nbsp;in&nbsp;verbose&nbsp;mode&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;verbose&nbsp;=&nbsp;1;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--argc;<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(argc&nbsp;&lt;&nbsp;3&nbsp;||&nbsp;argc&nbsp;&gt;&nbsp;4)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;we've&nbsp;been&nbsp;fed&nbsp;the&nbsp;wrong&nbsp;number&nbsp;of&nbsp;arguments&nbsp;-&nbsp;compain&nbsp;and&nbsp;exit&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usage(argv[0]);<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(argc&nbsp;==&nbsp;4)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;we're&nbsp;being&nbsp;passed&nbsp;the&nbsp;ciphertext&nbsp;to&nbsp;check&nbsp;(in&nbsp;unit&nbsp;test&nbsp;mode)&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expected_ciphertext&nbsp;=&nbsp;argv[3];<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(strlen(expected_ciphertext)&nbsp;!=&nbsp;16&nbsp;*&nbsp;2)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usage(argv[0]);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;read&nbsp;in&nbsp;key,&nbsp;checking&nbsp;length&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(strlen(argv[1])&nbsp;&gt;&nbsp;AES_MAX_KEY_LEN&nbsp;*&nbsp;2)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;<span style='color:blue'>"error: too many digits in key "</span><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:blue'>"(should be at most %d hexadecimal digits, found %u)\n"</span>,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AES_MAX_KEY_LEN&nbsp;*&nbsp;2,&nbsp;(<span style='color:red'>unsigned</span>)strlen(argv[1]));<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>exit</span>(1);<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> &nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;=&nbsp;hex_string_to_octet_string((<span style='color:red'>char</span>&nbsp;*)key,&nbsp;argv[1],&nbsp;AES_MAX_KEY_LEN&nbsp;*&nbsp;2);<br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;check&nbsp;that&nbsp;hex&nbsp;string&nbsp;is&nbsp;the&nbsp;right&nbsp;length&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(len&nbsp;!=&nbsp;32&nbsp;&&&nbsp;len&nbsp;!=&nbsp;48&nbsp;&&&nbsp;len&nbsp;!=&nbsp;64)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;<span style='color:blue'>"error: bad number of digits in key "</span><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:blue'>"(should be 32/48/64 hexadecimal digits, found %d)\n"</span>,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>exit</span>(1);<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> &nbsp;&nbsp;&nbsp;&nbsp;key_len&nbsp;=&nbsp;len&nbsp;/&nbsp;2;<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;read&nbsp;in&nbsp;plaintext,&nbsp;checking&nbsp;length&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(strlen(argv[2])&nbsp;&gt;&nbsp;16&nbsp;*&nbsp;2)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;<span style='color:blue'>"error: too many digits in plaintext "</span><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:blue'>"(should be %d hexadecimal digits, found %u)\n"</span>,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;*&nbsp;2,&nbsp;(<span style='color:red'>unsigned</span>)strlen(argv[2]));<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>exit</span>(1);<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> &nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;=&nbsp;hex_string_to_octet_string((<span style='color:red'>char</span>&nbsp;*)(&data),&nbsp;argv[2],&nbsp;16&nbsp;*&nbsp;2);<br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;check&nbsp;that&nbsp;hex&nbsp;string&nbsp;is&nbsp;the&nbsp;right&nbsp;length&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(len&nbsp;&lt;&nbsp;16&nbsp;*&nbsp;2)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;<span style='color:blue'>"error: too few digits in plaintext "</span><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:blue'>"(should be %d hexadecimal digits, found %d)\n"</span>,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;*&nbsp;2,&nbsp;len);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>exit</span>(1);<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(verbose)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;print&nbsp;out&nbsp;plaintext&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(<span style='color:blue'>"plaintext:\t%s\n"</span>,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;octet_string_hex_string((uint8_t&nbsp;*)&data,&nbsp;16));<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;encrypt&nbsp;plaintext&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;srtp_aes_expand_encryption_key(key,&nbsp;key_len,&nbsp;&exp_key);<br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(status)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;<span style='color:blue'>"error: AES key expansion failed.\n"</span>);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>exit</span>(1);<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;srtp_aes_encrypt(&data,&nbsp;&exp_key);<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:green'>/*&nbsp;write&nbsp;ciphertext&nbsp;to&nbsp;output&nbsp;*/</span><br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(verbose)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(<span style='color:blue'>"key:\t\t%s\n"</span>,&nbsp;octet_string_hex_string(key,&nbsp;key_len));<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(<span style='color:blue'>"ciphertext:\t"</span>);<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;ciphertext&nbsp;=&nbsp;v128_hex_string(&data);<br> &nbsp;&nbsp;&nbsp;&nbsp;printf(<span style='color:blue'>"%s\n"</span>,&nbsp;ciphertext);<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>if</span>&nbsp;(expected_ciphertext&nbsp;&&&nbsp;strcmp(ciphertext,&nbsp;expected_ciphertext)&nbsp;!=&nbsp;0)&nbsp;{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;<span style='color:blue'>"error: calculated ciphertext %s does not match "</span><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:blue'>"expected ciphertext %s\n"</span>,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ciphertext,&nbsp;expected_ciphertext);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>exit</span>(1);<br> &nbsp;&nbsp;&nbsp;&nbsp;}<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;<span style='color:red'>return</span>&nbsp;0;<br> }<br> </div><div align=center><br><table border=1 style='border: 1px solid black; border-collapse: collapse;'><tr><th colspan=3>Messung V0.5</th></tr><tr><td> <svg height='38' width='38' > <circle cx='19' cy='19' r='16' stroke='grey' fill='purple' fill-opacity='30%' stroke-linecap='round' stroke-width='3' stroke-dasharray='360' stroke-dashoffset='57' /> <text x='12' y='22' fill='red' font-size=6>C=92</text> </svg> </td><td> <svg height='38' width='38' > <circle cx='19' cy='19' r='16' stroke='grey' fill='purple' fill-opacity='30%' stroke-linecap='round' stroke-width='3' stroke-dasharray='360' stroke-dashoffset='0' /> <text x='12' y='22' fill='red' font-size=6>H=100</text> </svg> </td><td> <svg height='56' width='56' > <circle cx='28' cy='28' r='24' stroke='green' fill='purple' fill-opacity='30%' stroke-linecap='round' stroke-width='4' stroke-dasharray='360' stroke-dashoffset='36' /> <text x='18' y='32' fill='red' font-size=8>G=95</text> </svg> </td></tr></table></div> </span><br> <h3><b>¤</b>&nbsp;Dauer der Verarbeitung: 0.0 Sekunden&nbsp; (vorverarbeitet)&nbsp; <b>¤</b></h3> <p height="2" colspan="2" align="center"><span style="font-size: 3px;">*&copy; Formatika GbR, Deutschland</span></p> </div> </td> <td valign="top" align="center" class="greenscreensmall"> <br><br><br> <br> <table width="20%"> <tr><td align="center"> <a href="index.jsp?content=directory"> <br>Wurzel<br> <img border="0" src="/Images/penguin.jpg" height=36 alt="" title="Wurzel"> </a> </td> </tr> <tr><td align="center"> <a href="index.jsp?content=search" title="Suchen"> <br>Suchen<br> <img src="/Images/find.png" height="48" alt="" border="0"> </a> </td> </tr> <tr><td align="left"><a href="index.jsp?content=directory&detail=products/Sources/formale%20Sprachen/PVS/" title="Projekt "><br>Beweissystem der NASA</a></td></tr> <tr><td align="left"><a href="index.jsp?content=directory&detail=products/Sources/formale%20Sprachen/Isabelle/" title="Projekt "><br>Beweissystem Isabelle</a></td></tr> <tr><td align="left"><a href="index.jsp?content=directory&detail=products/Sources/formale%20Sprachen/Cobol/Test-Suite/" title="Projekt "><br>NIST Cobol Testsuite</a></td></tr> <tr><td align="left"><a href="index.jsp?content=directory&detail=products/Sources/formale%20Sprachen/Fortran/f90gl-1.2.15/" title="Projekt "><br>Cephes Mathematical Library</a></td></tr> <tr><td align="left"><a href="index.jsp?content=directory&detail=products/Sources/formale%20Sprachen/VDM/" title="Projekt "><br>Wiener Entwicklungsmethode</a></td></tr> <tr><td align="center"> <br> <h2>Haftungshinweis</h2> <div align="justify" class="featuresmall">Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.</div> <br> <h2>Bemerkung:</h2> <div align="justify" class="featuresmall"> Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.</div> <br> </td> </tr> </table> <br><br> <div> <br> <script src="https://formatika.de/base/formcheck.js"></script> <script> function checkform(form) { var res = true; res = res && isnotempty(form.file); res = res && isurl(form.file); return res; } </script> </div><br> <br> </td> </tr> </table> </div> <div class="printelement"> <script> warningpreview(); </script> </div> <p align=right class=hidden>2026-04-02</p> </td> </tr> <tr> <td width="100%" class="content"> <p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p> </td> </tr> </table> </td> <td width="17%" valign="top" class="storysmall"> <div> <table class="headlines"> <tr><td> <table border="0"> <tr><td><hr align="left" width="70%%"/></td></tr> <tr><td><h2 align="left">Neuigkeiten</h2></td></tr> <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="letzte Meldungen über diese Firma" href="index.jsp?content=aktuelles">Aktuelles</a></td></tr> <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="Spruch des Tages" href="index.jsp?content=motto">Motto des Tages</a></td></tr> <tr><td><hr align="left" width="70%%"/></td></tr> <tr><td><h2 align="left">Software</h2></td></tr> <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="Windows-Programme und andere" href="index.jsp?content=products">Produkte</a></td></tr> <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="Sammlung von Quellcodes" href="index.jsp?content=directory">Quellcodebibliothek</a></td></tr> <tr><td><hr align="left" width="70%%"/></td></tr> <tr><td><h2 align="left">Aktivitäten</h2></td></tr> <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='index.jsp?content=mobiles'>Artikel über Sicherheit</a></td></tr> <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='index.jsp?content=sslhelp'>Anleitung zur Aktivierung von SSL</a></td></tr> <tr><td><hr align="left" width="70%%"/></td></tr> <tr><td><h2 align="left">Muße</h2></td></tr> <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="kleine Reime" href="index.jsp?content=gedichte">Gedichte</a></td></tr> <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="einige Melodien" href="index.jsp?content=musik">Musik</a></td></tr> <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="einige Melodien" href="index.jsp?content=bilder">Bilder</a></td></tr> <tr><td><hr align="left" width="70%%"/></td></tr> <tr><td> <strong>Jenseits des Üblichen ....</strong> <br><a title="Anleitung zur Erforschung der Natur" href="index.jsp?content=flora"><img name='Image1' src='/Images/coconut%20small.png' vspace='7' width='60' height='50' vspace='7' alt='' title='Knack das Problem' ><img name='Image1' src='/Images/coconut%20small.png' vspace='7' width='60' height='50' vspace='7' alt='' title='Knack das Problem' ><img name='Image1' src='/Images/coconut%20small.png' vspace='7' width='60' height='50' vspace='7' alt='' title='Knack das Problem' ></a> </td></tr> <tr><td><hr align="left" width="90%%"/></td></tr> <tr><td><h2>Besucherstatistik</h2></td></tr> <tr> <td><a href="index.jsp?content=stats&detail=chart" target="_self"> <img width="168" src="/Images/Googlemap.png" border="0" alt="Besucherstatistik" title="Besucherstatistik" > </a> </td> </tr> <tr><td><hr align="left" width="90%%"/></td></tr> <tr><td><h2>Monitoring</h2></td></tr> <tr> <td><a href="https://uelk2599jehr.montastic.io" target="_blank"> <img src="https://uelk2599jehr.montastic.io/badge" width=96 alt="Montastic status badge"> </a> </td> </tr> </table> </td></tr> </table> </div> </td> </tr> </table> </td> <td width="3%">&nbsp;</td> </tr> <tr> <td colspan="3" align="center"> <div> <br><br><br> <div> <table width="45%" align="center" class="screenelement"> <tr><td width="80%"><hr class="ruler" /></td></tr> <tr><td width="80%" align="center"> <span class="feature"> <a title="&uuml;ber den Urheber dieser Seite" href="index.jsp?content=impressum">Impressum</a>&nbsp; | <a title="etwas mehr zur Ethik" href="index.jsp?content=gesellschaft&detail=ethik">Ethik und Gesetz</a>&nbsp; | <a title="diese Dinge liegen au&szlig;halb unserer Verantwortung" href="index.jsp?content=haftung" class="style6">Haftungsausschlu&szlig;</a>&nbsp; | <a title="hier können Sie eine Nachricht absetzen" href="index.jsp?content=contact">Kontakt</a>&nbsp; | <a title="ein Bild über den Seitenaufbau" href="index.jsp?content=sitemap">Seitenstruktur</a>&nbsp; </span> | <span class="featuresmall"><sup>&copy;</sup> 2026 JDD</span> | <img src='/Images/unknown.jpg' alt='' title="Seite erzeugt: Seite erzeugt: 2026-04-04 10:57:51" ontouchend="alert('Seite erzeugt: 2026-04-04 10:57:51');" onclick="alert('Seite erzeugt: 2026-04-04 10:57:51');" width=12 valign='middle'> </td></tr> </table> </div> </div> </td> </tr> </table> </body> </html>