>>183
おそらくだけど・・・
CryptEncryptはpbDataをdwDataLen分だけ暗号化するんだけど、
そうするとこの場合は文字列終端の\0まで含まれちゃう。
pbDataを初期化している場合はpdData[dwDataLen+1] が\0だから、一応ヌルターミネイト文字列になるんだけど、
初期化されてない場合は\0が無いので、その後のstrlenで落ちてしまうんじゃないかな?
サンプルだとpbDataはたいてい初期化されてるね。

で、この場合の解決策は
1) 暗号化するデータ長に+1を足さない
2) pdDataを事前に初期化(pdData[dwDataLen+1]=\0ならOK)する
のどちらかがいいと思う。