S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

暗号化処理のポーティング

元々がC++のコード。
C++でのコードはこんな感じ
簡単な暗号化 - 共通鍵暗号化
暗号化 (共通鍵による)


WindowsでのC++では、一般的なアルゴリズムっぽいのでC#に置き換えるサンプルあるだろ?
と思ったけどなかなかなくて、やっと見つけたのがここのサンプル。
How to use C#(managed code) rewrite Cryptography API( unmanaged code)


CryptAcquireContext関数などがadvapi32.dllにあるってのが判って、ヘッダファイル(wincrypt.h)の定数とか辿ってやっと紐解けた感じ。
16進数文字列とbyte配列とかの変換のワナに引っかかったりしたけど、なんとかできた。
(ロジックがロジックなので、参照先のみでソースは公開しませんw)


Cの文字列リテラルのLプレフィックスとか C#のrefとoutキーワードの違いとか、も含めて勉強になりました。