myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns
» Datenschutzerklärung
» Impressum

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » .NET Standard Output wird mit .NET Framework ausgelesen und bringt anderes Ergebnis
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

.NET Standard Output wird mit .NET Framework ausgelesen und bringt anderes Ergebnis

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
trashkid2000 trashkid2000 ist männlich
myCSharp.de-Mitglied

Dabei seit: 27.12.2010
Beiträge: 155


trashkid2000 ist offline

.NET Standard Output wird mit .NET Framework ausgelesen und bringt anderes Ergebnis

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich kämpfe nun schon eine ganze Weile, und es bringt mich bald um den Verstand....
Wir haben eine API, die unter .NET Core 2.1 läuft, und unter anderem Daten verschlüsselt....
Das macht die Bibliothek 'System.Security.Cryptography.Pkcs'. Diese erstellt eine verschlüsselte Nachricht für ein oder mehrere Empfänger. Per nuget eingebunden.
Soweit alles gut, läuft smile

Auf Clientside empfangen wir die Nachrichten und müssen sie auch wieder entschlüsseln.
Und genau hier gehen die Probleme los...

Der Client ist gegen .NET Framework 4.7 programmiert. Die oben genannte Bibliothek ist in der gleichen Version per nuget eingebunden, aber es verhält sich anders...
So können die verschlüsselten Werte auch wieder entschlüsselt werden, aber der Wert, der da raus fällt, passt nur so halb.

Es sind immer irgendwelche Sonderzeichen am Anfang drin...
Das scheint irgendwie ein Codierungs-Problem zu sein. Aber wir benutzen überall UTF8.
Gegen netStandard 2.0 können die Werte ganz normal entschlüsselt werden.

Ich sehe auch, dass das Package je nach Framework unterschiedliche Assemblies einbindet, vielleicht liegt darin das Problem??

Ist da was bekannt?
Für Antworten bin ich sehr dankbar,
lG Marko
10.04.2019 22:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.785
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So wie Du es beschreibst, kann es nicht sein: das .NET Ökosystem funktioniert so gar nicht.

.NET Standard ist nur ein Vertrag - keine Runtime.
.NET Standard ist aus C# sicht als Interface zu sehen, während .NET Framework, Mono, Xamarin, .NET Core.. als konkrete Implementierung zu sehen sind.

Zitat:
Gegen netStandard 2.0 können die Werte ganz normal entschlüsselt werden.

Das kann daher nicht sein, denn .NET Standard ist niemals zur Laufzeit bekannt.

Der Sinn ist, dass der Code, der gegen .NET Standard läuft, auch in allen Runtimes genau so läuft, die die jeweilige .NET Standard Version unterstützen.
Als ob man eben ein Interface deklariert und alle implementierenden Klassen sich genau so verhalten, wie es das Interface als Vertrag vorgibt.

Die Frage ist hier also eher, ob sich jede Runtime identisch verhält.
Die Runtimes sind aber auch von Außenfaktoren (zB. Windows Settings) abhängig - das gilt es auch zu überprüfen.

Konkretes Beispiel?
 [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden
10.04.2019 22:32 Beiträge des Benutzers | zu Buddylist hinzufügen
trashkid2000 trashkid2000 ist männlich
myCSharp.de-Mitglied

Dabei seit: 27.12.2010
Beiträge: 155

Themenstarter Thema begonnen von trashkid2000

trashkid2000 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi Abt,

Zitat von Abt:
.NET Standard ist nur ein Vertrag - keine Runtime.
.NET Standard ist aus C# sicht als Interface zu sehen, während .NET Framework, Mono, Xamarin, .NET Core.. als konkrete Implementierung zu sehen sind.

Soweit dachte ich auch. Wie gesagt, die API auf dem Server ist gege .NET CORE 2.x entwickelt.

Zitat von Abt:
Die Frage ist hier also eher, ob sich jede Runtime identisch verhält.

Zitat von Abt:
Konkretes Beispiel?
 [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden

Das habe ich mir gestern gebaut, in dem ich eine dumme Consolen-App geschrieben habe, die unter .NET Framework 4.6 läuft, und einmal ein Binary vom Server mit Framework-Bordmitteln entschlüsselt. Da kommt das Besagte bei raus.
Zusätzlich inkludiert das Testprojekt noch eine netStandard-Bibliothek in 2.0, wo genau das Gleiche getan wird.
Und da passt es dann verwundert
Wenn ich heute mal dazu komme, werde ich es hier mal posten.
Danke erstmal, Marko
11.04.2019 06:45 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.785
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von trashkid2000:
Zusätzlich inkludiert das Testprojekt noch eine netStandard-Bibliothek in 2.0, wo genau das Gleiche getan wird.
Und da passt es dann :baby:

In der Formulierung kann es nicht sein; Deine .NET Standard Bibliothek kann nicht ausgeführt werden.
Daher kannst Du hier direkt draus kein Resultat bekommen.

Du kannst die Bibliothek höchstens irgendwo referenzieren und dann in .NET Core, .NET Framework... ausführen.
Daher in der Form der Erklärung eigentlich nur zwei potentielle Ursachen:
- Unterschiedene der referenzierten Pakete
- Runtime Unterschiede

Verhält sich denn Deine Bibliothek identisch, wenn Du es von .NET Framework und .NET Core ausführen lässt?
Kannst einfach nen Unit Test schreiben; der braucht ja eine Runtime.
11.04.2019 11:14 Beiträge des Benutzers | zu Buddylist hinzufügen
trashkid2000 trashkid2000 ist männlich
myCSharp.de-Mitglied

Dabei seit: 27.12.2010
Beiträge: 155

Themenstarter Thema begonnen von trashkid2000

trashkid2000 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi Abt :-)

Zitat von Abt:
Du kannst die Bibliothek höchstens irgendwo referenzieren und dann in .NET Core, .NET Framework... ausführen.
Daher in der Form der Erklärung eigentlich nur zwei potentielle Ursachen:
- Unterschiedene der referenzierten Pakete

Ja, die NETStandard-Bibliothek wird in ein .NET Framework-Projekt refrenziert.

Und genau, der Unterschied liegt in dem von dem Package referenzierten Pakete:

Unter .NET Framework 4.6 sind es diese:
System.Security.Cryptography.Encoding (>= 4.3.0)
System.Security.Cryptography.X509Certificates (>= 4.3.0)

Unter .NETStandard 2.0 diese:
System.Buffers (>= 4.4.0)
System.Security.Cryptography.Cng (>= 4.4.0)
System.Memory (>= 4.5.1)

Ab .NET Framework 4.6.1 gibt es keine Abhängigkeiten mehr...

Ich habe es zum Laufen gebracht, indem nun die Assembly, die für NETStandard 2.0 gedacht ist, sowie alle da abhängigen Assemblies, geladen werden.

Aber so ganz verstehen tue ich es trotzdem nicht verwundert
lG, Marko

//EDIT: Ich werde mal ein konkretes Beispiel nachstellen

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von trashkid2000 am 11.04.2019 22:54.

11.04.2019 22:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.271
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

du hast den Beitrag von  Abt wohl immer noch nicht ganz verstanden. Es gibt keine .NET Standard Runtime Library, sondern nur konkrete Implementierungen davon.
Auch .NET Framework Libraries sind .NET Standard Implementierungen (nur eben z.B. .NET Framework 4.6 entspricht .NET Standard 1.3), s.a.  .NET Standard bzw. interaktiv  .NET Standard Versions.
Und .NET Framework 4.6.1 ist eine Besonderheit, denn es entspricht .NET Standard 1.4 - 2.0 (s. Fußnote ² im oberen ersten Link).
12.04.2019 08:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 3 Monate.
Der letzte Beitrag ist älter als 3 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 16.07.2019 08:41