Hallo,
ich erstelle mit C# einen String, der als HTML-Datei ausgegeben wird. Hierbei möchte ich in einigen Inputfeldern einen Text "verstecken". Dazu habe ich eine einfache Verschlüsselung codiert, die in C# verschlüsselt und in JavaScript wieder entschlüsseln soll.
In C# (zum verschlüsseln, bzw eher unleserlich machen)
[highlight=c#]
public static string Crypt(string text, string k = "xyz")
{
var result = new StringBuilder();
for (int c = 0; c < text.Length; c++)
result.Append((char)((UInt16)text[c] ^ (UInt16)k[c % k.Length]));
return result.ToString();
}
[/highlight]
In JavaScript# (zum entschlüsseln, bzw. eher zum wieder leserlich machen)
function crypt(input, key = "xyz") {
let result = '';
for (let i = 0; i < input.length; i++) {
let charCode = input.charCodeAt(i) ^ key.charCodeAt(i % key.length);
result += String.fromCharCode(charCode);
}
return result;
}
Die Rückkonvertierung funktioniert bei den meisten Strings auch richtig, bei einigen Strings treten jedoch Fehler auf:
erpiesen (statt erwiesen), lässs (statt lässt), bepegen (statt gewegen)
Auch lange Wörter wie zusammengestellt, verbrennen, beginnen sind oft richtig zurückkonvertiert.
Woran könnte das liegen und hat jemand einen Lösungsvorschlag. Evtl. auch ein anderes gleich funktionierendes Verschlüsselungsverfahren (bzw. unleserlich machen reicht) könnte mir helfen. Wichtig, dass dies in C# und JS implementierbar ist.
ich erstelle mit C# einen String, der als HTML-Datei ausgegeben wird. Hierbei möchte ich in einigen Inputfeldern einen Text "verstecken". Dazu habe ich eine einfache Verschlüsselung codiert, die in C# verschlüsselt und in JavaScript wieder entschlüsseln soll.
In C# (zum verschlüsseln, bzw eher unleserlich machen)
[highlight=c#]
public static string Crypt(string text, string k = "xyz")
{
var result = new StringBuilder();
for (int c = 0; c < text.Length; c++)
result.Append((char)((UInt16)text[c] ^ (UInt16)k[c % k.Length]));
return result.ToString();
}
[/highlight]
In JavaScript# (zum entschlüsseln, bzw. eher zum wieder leserlich machen)
function crypt(input, key = "xyz") {
let result = '';
for (let i = 0; i < input.length; i++) {
let charCode = input.charCodeAt(i) ^ key.charCodeAt(i % key.length);
result += String.fromCharCode(charCode);
}
return result;
}
Die Rückkonvertierung funktioniert bei den meisten Strings auch richtig, bei einigen Strings treten jedoch Fehler auf:
erpiesen (statt erwiesen), lässs (statt lässt), bepegen (statt gewegen)
Auch lange Wörter wie zusammengestellt, verbrennen, beginnen sind oft richtig zurückkonvertiert.
Woran könnte das liegen und hat jemand einen Lösungsvorschlag. Evtl. auch ein anderes gleich funktionierendes Verschlüsselungsverfahren (bzw. unleserlich machen reicht) könnte mir helfen. Wichtig, dass dies in C# und JS implementierbar ist.
Comment