在使用 CryptoAPITransform进行加密时异常要调用Reset()
通过.net源码能看到Reset()里有
public void Reset() {
_depadBuffer = null;
// just ensure we've called CryptEncrypt with the true flag
byte[] temp = null;
Utils._EncryptData(_safeKeyHandle, EmptyArray<Byte>.Value, 0, 0, ref temp, 0, PaddingValue, true);
}
EmptyArray.Value 是只读的
PaddingValue 是加密解密的枚举类型 Mode
_depadBuffer 在 TransformFinalBlock里调用不到只在 TransformBlock里被new出来
Utils._EncryptData(_safeKeyHandle, EmptyArray<Byte>.Value, 0, 0, ref temp, 0, PaddingValue, true);
Utils里面的代码看不到,这里就猜测是SafeKeyHandle了