2009-09-04 6 views
1

J'ai besoin d'un moyen de transférer un assemblage compilé du client vers le serveur et de le stocker dans la base de données ou dans un fichier de manière à pouvoir saisir ces octets du côté "à" et recharger l'ensemble. Y a-t-il un moyen de le faire? Pour clarifier, j'ai une application winforms qui va générer du code et le compiler en fonction de certaines métadonnées. Maintenant, je dois pouvoir transférer ceci à un site Web et le stocker d'une façon ou d'une autre, mais je ne veux pas de dll (parce qu'il peut être décompilé). J'aurais alors un programme "serveur" sur le côté, qui chargerait ceci en mémoire. Je pourrais juste transférer le code source crypté, mais j'ai pensé que je pourrais juste transférer l'assemblage compilé.Transférer ou sérialiser l'assemblage

Plus d'infos: Même du côté "de", il n'y a pas de fichier généré, il est compilé en mémoire, donc la DLL physique n'est jamais créée.

+0

Si vous avez cela en mémoire, alors pourquoi n'essayez-vous pas de convertir le flux en blob et de le stocker dans db, et de le récupérer du côté "à". –

Répondre

1

Que diriez-vous de transférer une DLL cryptée?

+0

Comment cela fonctionnerait-il? Voulez-vous dire obfusqué? – epitka

1

Vous pouvez utiliser la cryptographie à clé publique.

Le côté client utiliserait la clé publique pour chiffrer les octets constituant l'ensemble. Ces octets seraient stockés dans la base de données - complètement inutile à quiconque n'est pas en possession de la clé privée. Le serveur peut ensuite lire ces octets, les décrypter avec la clé privée et reconstituer l'ensemble à partir du flux d'octets décrypté.

Étant donné que vous utilisez la cryptographie à clé publique, même si le client est compromis, votre secret (la clé privée) est sûr car il est stocké sur le serveur.

Pour en savoir plus sur cette technique, je recommande de lire this.

+0

Y at-il un lien vers plus d'informations sur la façon de le faire. J'ai mis à jour ma question avec quelques informations supplémentaires. Je suppose que j'utiliserais MemoryStream pour lire des octets, les crypter et ensuite les envoyer sur le fil. Du côté «à», comment je reconstituerais l'assemblée. Qu'en est-il s'il y a plusieurs assemblages se référant les uns aux autres. – epitka

+0

J'ai ajouté un lien pour vous. –

+0

Ma question était plus sur la mécanique de l'ensemble du processus, pas sur la cryptographie, mais merci pour le lien de toute façon. – epitka

1

Je vous suggère d'utiliser un sérialiseur binaire et un canal qui se déverse dans un CryptoStream pouvant être configuré sur un modèle de cryptage particulier. Ensuite, prenez le flux de sortie et jetez-le à votre emplacement. Sur la fin de votre processus, vous le déchiffrez et le désérialisez. Si vous le souhaitez, vous pouvez également utiliser un DeflateStream si votre assemblage est suffisamment grand pour économiser de l'espace.

Espérons que cela aide. Si vous voulez des exemples faites le moi savoir.

Questions connexes