文字列の基本的な対称キー暗号化に Windows 8 (Windows ストア アプリ) で Windows.security.cryptography API を使用しようとしています (今のところ)。
オンラインでさまざまなサンプルを調べましたが、それらのすべてで、予期しないキー長の例外でコードが失敗しました。
static byte[] cKey = { (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E' };
static byte[] cIV = { (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E' };
public static string Encrypt(String guidOriginal)
{
IBuffer encrypted;
IBuffer buffer;
IBuffer iv = null;
SymmetricKeyAlgorithmProvider algorithm = SymmetricKeyAlgorithmProvider.OpenAlgorithm("AES_CBC_PKCS7");
IBuffer keymaterial = CryptographicBuffer.CreateFromByteArray(cKey);
CryptographicKey key = algorithm.CreateSymmetricKey(keymaterial);
iv = CryptographicBuffer.CreateFromByteArray(cIV);
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
buffer = CryptographicBuffer.CreateFromByteArray( encoding.GetBytes(guidOriginal));
encrypted = Windows.Security.Cryptography.Core.CryptographicEngine.Encrypt(key, buffer, iv);
return CryptographicBuffer.EncodeToBase64String(encrypted);
}
^^ 上記は私が試したコードの 1 つです ( http://social.msdn.microsoft.com/Forums/en-ZA/winappswithcsharp/thread/b541a08a-d3cd-4e21-8d21-のコードの修正版を使用) 7ed80749cb23 ) で失敗します。
CryptographicKey key = algorithm.CreateSymmetricKey(keymaterial);
例外: ArgumentException