Я запрограммировал метод шифрования и дешифрования AES, но когда я шифрую и дешифрую текст, алгоритм допускает ошибки.
Что я сделал не так?
public class VSVerschluesselung : MonoBehaviour {
[SerializeField]
private TMP_InputField input;
[SerializeField]
private TMP_InputField output;
private byte[] schluessel = { 196, 67, 23, 195, 176, 89, 198, 17, 7, 248, 47, 232, 246, 107, 249, 252, 138, 21, 133, 226, 186, 82, 255, 199, 152, 0, 1, 173, 239, 18, 181, 238 };
private byte[] iv = { 137, 224, 26, 121, 180, 59, 150, 95, 164, 216, 57, 161, 247, 251, 68, 182 };
private Aes crypt;
public void verschluesseln () {
string text = input.text;
if (text == "" || text == null) return;
Debug.Log ("Verschlüsselung");
using (Aes crypt = Aes.Create ()) {
this.crypt = crypt;
//Maximale Keygröße auswählen
crypt.KeySize = 256;
crypt.Key = schluessel;
crypt.IV = iv;
crypt.BlockSize = 128;
crypt.Mode = CipherMode.ECB;
// Create an encryptor to perform the stream transform.
ICryptoTransform encryptor = crypt.CreateEncryptor (crypt.Key, crypt.IV);
// Create the streams used for encryption.
using (MemoryStream msEncrypt = new MemoryStream ()) {
using (CryptoStream csEncrypt = new CryptoStream (msEncrypt, encryptor, CryptoStreamMode.Write)) {
using (BinaryWriter swEncrypt = new BinaryWriter (csEncrypt)) {
//Write all data to the stream.
swEncrypt.Write (text);
}
output.text = Encoding.Unicode.GetString (msEncrypt.ToArray ());
}
}
}
crypt.Clear ();
}
public void entschluesseln () {
string inputText = input.text;
if (inputText == "" || inputText == null) return;
Debug.Log ("Entschlüsselung");
using (Aes crypt = Aes.Create ()) {
this.crypt = crypt;
//Maximale Keygröße auswählen
crypt.KeySize = 256;
crypt.Key = schluessel;
crypt.IV = iv;
crypt.BlockSize = 128;
crypt.Mode = CipherMode.ECB;
byte[] verschlText = Encoding.Unicode.GetBytes (inputText);
// Create a decryptor to perform the stream transform.
ICryptoTransform decryptor = crypt.CreateDecryptor (crypt.Key, crypt.IV);
// Create the streams used for decryption.
using (MemoryStream msDecrypt = new MemoryStream (verschlText)) {
using (CryptoStream csDecrypt = new CryptoStream (msDecrypt, decryptor, CryptoStreamMode.Read)) {
using (StreamReader srDecrypt = new StreamReader (csDecrypt)) {
// Read the decrypted bytes from the decrypting stream
// and place them in a string.
output.text = srDecrypt.ReadToEnd ();
}
}
}
}
crypt.Clear ();
}
}
Введите:
1 Am Anfang schuf Gott Himmel und Erde.
2 Война Эрде со всеми силами, и Финский лагерь; und der Geist Gottes schwebte über dem Wasser.
3 Und Gott sprach: Es werde Licht! Унд эс Уорд Лихт.
4 Und Gott Sah, Dass Das Licht Gut War. Да, Готт дас Лихт фон дер Финстернис
5 и более поздние даты и даты Finsternis Nacht. Да оберегает Абенд и Морген дер Эрст Тэг.
Выход:
Am1 Am Anfang sc h y K lund Erde.
2 Война Эрде со всеми силами и Финский лагерь; und der Geist Gottes schwebte über dem Wasser.
3 Und Gott sprach: Es werde = 1 Ŀ ƺard Licht.
4 Und Gott sah, daI2> Q d % war. Да, Готт дас Лихт фон дер Финстернис
5 und nannte das Licht Tag | _q is Nacht. Да под присмотром Абенд и Морген дер Эрст Тэг.