| 

.NET C# Java Javascript Exception

6
Die nachfolgende Code-Zeile möchte ich von C zu C# übersetzen. Meine Kenntnisse in C sind sehr gering.

#define er1(k) (rotr(2*x[(r-1)%xw]^x[(r+1)%xw]^k^r,8)*9^k)


Schon mal vielen Dank
News:
25.02.2014
Falkner 795 3 9
Falkner 795 3 9
Hab nicht so die Ahnung von C und kann auch nicht helfen. Ich bin einfach neugierig. Ist das Fragment ein Ruptor?
boga 25.02.2014
1
@boga: Ja, http://ru.wikipedia.org/wiki/EnRUPT
Falkner 25.02.2014
Mal für den interessierten Mitleser: was ist ein Ruptor?
muffi 25.02.2014
"an cryptography symmetric block encryption algorithm and kriptoprimitiv developed by Sean O'Neill"

http://translate.google.com/translate?sl=ru&tl=en&u=http%3A%2F%2Fru.wikipedia.org%2Fwiki%2FEnRUPT
Floyd 25.02.2014
@muffi: Ruptor ist: Marcos el Ruptor, http://en.wikipedia.org/wiki/User:Ruptor. Einige Krypt-Codes, die unter Ruptor veröffentlicht wurden, "Sean O'Neill" zugeschrieben (bspw.: RTEA).
Falkner 25.02.2014
1 Antwort
4
Du bist hier über ein Präprozessor Makro gestolpert. Vereinfacht ausgedrückt, leistet es eine Textersetzung. D.h. wo auch immer der Präprozessor auf ein er1(k) stößt, ersetzt er es durch (rotr(2*x[(r-1)%xw]^x[(r+1)%xw]^k^r,8)*9^k), wobei k selbst als Parameter interpretiert wird.
Im von Dir im Kommentar verlinkten Wikipedia führt das also dazu:
Ausgangslage:

#define er1(k) (rotr(2*x[(r-1)%xw]^x[(r+1)%xw]^k^r,8)*9^k)

enRUPT (u32 *x, const u32 xw, u32 *key, const u32 kw)
{
u32 r, s=4, n=s*(2*xw+kw);
for (r=1; r<=n; r++) x[r%xw] ^= er1(key[r%kw]);
}


Nach Expansion des Makros
enRUPT (u32 *x, const u32 xw, u32 *key, const u32 kw)
{
u32 r, s=4, n=s*(2*xw+kw);
for (r=1; r<=n; r++)
x[r%xw] ^= (rotr(2*x[(r-1)%xw]^x[(r+1)%xw]^key[r%kw]^r,8)*9^key[r%kw]);
}

Du kannst es also manuell selbst an jeder nutzenden Stelle expandieren oder in C# das Ganze einfach in eine Methode verpacken und diese aufrufen.
25.02.2014
ffordermaier 8,4k 3 9
@ffordermaier: Vielen Dank für die schnelle Hilfe! Da hab ich also wieder was dazu gelernt. Grosse Freude!!!
Falkner 25.02.2014
Gern geschehen.
ffordermaier 26.02.2014

Stelle deine .net-Frage jetzt!