| |
|
|
Michael Wodrich | Die aus einigen Mail-Programmen und NewsReadern bekannte ROT13-Verschlüsselung. Nicht als gute Verschlüsselung gedacht, sondern um Texte vorübergehend zu verbergen. Z.B. wenn circa Fußball-Ergebnisse geplaudert wird deren Ausstrahlung erst am Abend erfolgt. Oder jemand hat eine TV-Serie schon in Amerika gesehen und will darüber diskutieren. Mit ROT13 verborgen ist es jedem freigestellt, sich selbst den Divertimento zu verderben und den Text zu lesen oder lieber zu warten. KompilierenMarkierenSeparierenXProfan 9 (lokaler Bereich, Operatoren)
Autor: Michael Wodrich
Def InRange(3) If((@&(1) >= @&(2)) and (@&(1) <= @&(3)),1,0)
Def InRangeEx(3) If((@&(1) > @&(2)) and (@&(1) < @&(3)),1,0)
Die aus Mail-Programmen bekannte ROT13-Verschlüsselung.
Zweimalige Anwendung entschlüsselt den Text wieder.
Proc Rot13$
Parameters Text$
Declare Erg$,Buf#,Anz%,c%
Let Anz% = Len(Text$) Länge wird mehrmals benötigt
Dim Buf#,Anz% + 1
String Buf#,0 = Text$
WhileLoop 0,Anz%
Let c% = Byte(Buf#,&loop)
If InRange(c%,65,77) or InRange(c%,97,109) A..M, a..m
Byte Buf#,&loop = c% + 13
ElseIf InRange(c%,78,90) or InRange(c%,110,122) N..Z, n..z
Byte Buf#,&loop = c% - 13
EndIf
EndWhile
Let Erg$ = String$(Buf#,0)
Dispose Buf#
Return Erg$
EndProc
cls
print ""
print Rot13$("Qvrf vfg rva Grfg.")
print ""
print Rot13$("Qvr nhf Znvy-Cebtenzzra orxnaagr EBG13-Irefpuyüffryhat.")
print Rot13$("Mjrvznyvtr Najraqhat ragfpuyüffryg qra Grkg jvrqre.")
print ""
print Rot13$("Ahe mhz rvasnpura ireoretra. Nyf Irefpuyüffryhat hatrrvtarg!")
WaitKey
end
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 19.09.2005 ▲ |
|
|
|
|
Michael W. | Das geht naturalmente auch etwas kompakter...
Da habe ich die logischen And und Or verwendet. And: && Or: ||
Läßt sich also auch an die 11er Version anpassen.
// Autor: Michael Wodrich
Proc Rot13
Parameters string s
Declare string res, int c
WhileLoop 1,Len(s)
// c = ord(mid$(s,&loop,1))
c = ord(substr$(s,&loop))
res = res + Chr$(if(((c > 64) && (c < 78)) || ((c > 96) && (c < 110)), c + 13, if(((c > 77) && (c < 91)) || ((c > 109) && (c < 123)), c - 13, c )))
EndWhile
Return res
EndProc
cls
Declare x$
x$ = "Test abc,123"
Print " Original:",x$
x$ = Rot13(x$)
Print "encode Rot13:",x$
x$ = Rot13(x$)
Print "decode Rot13:",x$
print ""
print Rot13("Qvrf vfg rva Grfg.")
print ""
print Rot13("Qvr nhf Znvy-Cebtenzzra orxnaagr EBG13-Irefpuyüffryhat.")
print Rot13("Mjrvznyvtr Najraqhat ragfpuyüffryg qra Grkg jvrqre.")
print ""
print Rot13("Ahe mhz rvasnpura ireoretra. Nyf Irefpuyüffryhat hatrrvtarg!")
WaitKey
end
|
|
|
| |
|
|