2011-01-01から1年間の記事一覧

C++, ガベージコレクション、回収 3/3

ガベージコレクションの回収。どの方式でも多分似たようなものだと思う。 // ガベージコレクショの回収 void GCCollect() { std::vector handles; // 自プロセスの他スレッドを一時停止 MySuspendThread(handles); std::vector dels; // mark 生きているGCOb…

ガベージコレクショのメモリ管理の基本1,参照はオブジェクト側から。 2,メモリの開放はヒープ側から。参照はGCPtrであるオブジェクト側から確認します。std::setにinsert,delすることでオブジェクトの生存を管理します。オブジェクトが必要なくなりdelさ…

ガベージコレクタでは、classに対してdeleteを使わない同等の処理が必要になる。 case1とcase2は同じであるが、case2ではデストラクタを取り出し、外側からデストラクトしている。 #define GC_NEW(T) new(GCAllocate::GC_new( sizeof(T) ))T typedef void (*…

C++、C#、HMACSHA1、HMACSHA256

ついでに、CryptAPIでHMACSHA256を作成しました。 当たり前ですが、C#のHMACSHA256と同じ結果を出力します。 HMACSHA1も可。 返り値であるCStringAはバイナリのコンテナとして使用しているので、読める字に直すにはBase64Encodeが必要。 CStringA HMACSHA( c…

暗号化した文字を無事サーバに届けるには、char byte WCHAR間の変換のが必要で、整理してみた。 ネット上では標準になっているUTF8を使用するとして、暗号化した文字を送ると以下になる。 ○Client(C++)->Server(C#)元のデータ(WCHAR)-->EncodeToUtf8(UTF8)->…

C++、C#、秘密鍵、公開鍵、RSA

RSAの鍵作成(C++)->暗号化(C#)->復号化(C++)の例RSAの鍵作成(C++)int _tmain(int argc, _TCHAR* argv[]) { // RSA 秘密鍵と公開鍵を作成し、両方をファイル化 HCRYPTPROV hCryptprov; BOOL bl = CryptAcquireContext(&hCryptprov, NULL, MS_ENH_RSA_AES_PROV…

AES256で暗号化された文字を復号化。 RFC2898 PBKDF2の仕様を満たす関数がMSのCryptAPIに含まれていないが、 ネット上で代わりを見つけたので試してみた。 暗号化はC#static void Main(string[] args) { string password= "password"; // パスワード byte[] …

サーバ上にパスワードを登録する時、サーバは秘密鍵と公開鍵を作成し公開鍵をネットを使ってクライアントへ送出する。 クライアントはパスワードをこの公開鍵を用いて暗号化し、サーバへ送る。 サーバは暗号化されたパスワードを秘密鍵で復号し、パスワード…

元ネタ http://support.microsoft.com/kb/960770/jaSQLSERVER2008 SP1でこの問題が起きました。 ただ再現しにくい現象で、あやうくサーバを交換するとこでした。 ●問題が起きたパターン SELECT * INTO #TEMP_A FROM ... SELECT * INTO #TEMP_B FROM ...INSER…

MSと開発がブツかるかもしれないリスクを抱えながら、Direct2Dでフレームワークを作成中。 ポイントは絵がきれい、ではなくHWNDが邪魔でしょうがないので、これを外すことにある。 MainWindowのHWND以外は認めないというフレームワークである。ゲーム以外の…