[DllImport("crypt32.dll", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool CryptStringToBinary([MarshalAs(UnmanagedType.LPWStr)] string pszString, uint cchString, uint dwFlags, [Out] IntPtr pbBinary, ref uint pcbBinary, out uint pdwSkip, out uint pdwFlags);
Declare Function CryptStringToBinary Lib "crypt32.dll" (TODO) As TODO
public class CRYPT_STRING_FLAGS
{
public const uint CRYPT_STRING_BASE64HEADER = 0;
public const uint CRYPT_STRING_BASE64 = 1;
public const uint CRYPT_STRING_BINARY = 2;
public const uint CRYPT_STRING_BASE64REQUESTHEADER = 3;
public const uint CRYPT_STRING_HEX = 4;
public const uint CRYPT_STRING_HEXASCII = 5;
public const uint CRYPT_STRING_BASE64_ANY = 6;
public const uint CRYPT_STRING_ANY = 7;
public const uint CRYPT_STRING_HEX_ANY = 8;
public const uint CRYPT_STRING_BASE64X509CRLHEADER = 9;
public const uint CRYPT_STRING_HEXADDR = 10;
public const uint CRYPT_STRING_HEXASCIIADDR = 11;
public const uint CRYPT_STRING_HEXRAW = 12;
public const uint CRYPT_STRING_NOCRLF = 0x40000000;
public const uint CRYPT_STRING_NOCR = 0x80000000;
}
Do you know one? Please contribute it!
None.
Please add some!
public static byte[] StringToBinary(string datastr)
{
uint flags, skipbytes, buflen;
bool status;
buflen = datastr.Length;
IntPtr buffer = Marshal.AllocHGlobal((int)buflen);
status = CryptStringToBinary(datastr,
(uint)datastr.Length,
CRYPT_STRING_FLAGS.CRYPT_STRING_BASE64_ANY,
buffer,
ref buflen,
out skipbytes,
out flags);
byte[] keybytes = new byte[buflen];
Marshal.Copy(buffer, keybytes, 0, (int)buflen);
Marshal.FreeHGlobal(buffer);
return keybytes;
}