Ik ben genoodzaakt een eigen DES implementatie te schrijven. De ingebouwde Crypto classes van het Framework voldoen niet, omdat ik encryptie moet kunnen doen met een (initiële) sleutel met allemaal 0-bytes, en deze weak-key staat het framework keihard niet toe.
Ik heb het boek van Scheiner en een op net gevonden C implementatie, dus dat moet lukken dacht ik. Ik heb e.e.a. geport naar C#, echter, wanneer ik een simpele byte array {1,2,3,4,5,6,7,8} wil versleutelen dan krijg ik compleet andere resultaten wanneer ik dit via mijn eigen implemenatie doe, en via het framework, ter controle. Ik gebruik de ECB methode, dus voorgaande zaken zullen geen invloed hebben op de versleuteling.
Mijn vraag is nu, even ervan uitgaande dat ik iets fout doe en het framework klopt, en met gelijke sleutels, de data exact gelijk versleuteld moet worden: Zijn er manieren om alle tussenstappen (permutaties, compressions en expansions etc.) te kunnen controleren?
Tegen de theorie heb ik alles gecontroleerd, en zou ik zeggen: het klopt!
Wanneer ik weer een decrypt doe via mijn eigen implemenatie, krijg ik wel mijn originele data weer terug, maar ik weet niet zeker of dat inhoudt dat mijn implementatie in orde is.
Hebben jullie tips voor mij hoe dit aan te pakken?
De c-code die ik heb gebruikt om op basis daarvan zelf een c# implemenatie te schrijven, staat op:
http://ubiqx.org/libcifs/source/Auth/DES.c
Ik heb het boek van Scheiner en een op net gevonden C implementatie, dus dat moet lukken dacht ik. Ik heb e.e.a. geport naar C#, echter, wanneer ik een simpele byte array {1,2,3,4,5,6,7,8} wil versleutelen dan krijg ik compleet andere resultaten wanneer ik dit via mijn eigen implemenatie doe, en via het framework, ter controle. Ik gebruik de ECB methode, dus voorgaande zaken zullen geen invloed hebben op de versleuteling.
Mijn vraag is nu, even ervan uitgaande dat ik iets fout doe en het framework klopt, en met gelijke sleutels, de data exact gelijk versleuteld moet worden: Zijn er manieren om alle tussenstappen (permutaties, compressions en expansions etc.) te kunnen controleren?
Tegen de theorie heb ik alles gecontroleerd, en zou ik zeggen: het klopt!
Wanneer ik weer een decrypt doe via mijn eigen implemenatie, krijg ik wel mijn originele data weer terug, maar ik weet niet zeker of dat inhoudt dat mijn implementatie in orde is.
Hebben jullie tips voor mij hoe dit aan te pakken?
De c-code die ik heb gebruikt om op basis daarvan zelf een c# implemenatie te schrijven, staat op:
http://ubiqx.org/libcifs/source/Auth/DES.c