質問者
ファイルの暗号化、復号化の方法について

質問
-
WindowsアプリケーションでEncrypt,Decryptを実施したいのですが「キーセットがありません」というエラーが出ます。
「http://msdn2.microsoft.com/ja-jp/library/system.io.fileinfo.encrypt.aspx」のサンプルをコンソールで実行するとうまくいきますが、Windowsアプリケーションでは上記のエラーがでます。対処方法を教えてください。
よろしくお願いします。
すべての返信
-
こんにちは。
MSDNに
「Encrypt メソッドと Decrypt メソッドの両方で、コンピュータにインストールされている暗号化サービス プロバイダ (CSP: Cryptographic Service Provider) およびメソッドを呼び出すプロセスのファイル暗号化キーを使用します。現在のファイル システムは NTFS としてフォーマットされている必要があり、また現在のオペレーティング システムは Microsoft Windows NT 以降である必要があります。」
と書いてあります。
お使いのPCはNTFSでフォーマットされていますか。
-
少し長めで申し訳ありませんが、そのまま書き込みました。よろしくお願いします。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Security.AccessControl;namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}private void button1_Click(object sender, EventArgs e)
{
try
{
string FileName = "test.dat";Console.WriteLine("Enceypt " + FileName);
// Encrypt the file.
AddEncryption(FileName);Console.WriteLine("Decrypt " + FileName);
// Decrypt the file.
RemoveEncryption(FileName);Console.WriteLine("Done");
}
catch (Exception ex)
{
Console.WriteLine(ex);
MessageBox.Show(ex.Message, "");
}Console.ReadLine();
MessageBox.Show("End", "");
}
public static void AddEncryption(string FileName)
{
// Create a new FileInfo object.
FileInfo fInfo = new FileInfo(FileName);// Add encryption.
fInfo.Encrypt();}
public static void RemoveEncryption(string FileName)
{
// Create a new FileInfo object.
FileInfo fInfo = new FileInfo(FileName);// Remove encryption.
fInfo.Decrypt();}
}
} -
Protected Storage サービスが「停止」になっているか、インストールされていないとか?もしくは、Windows に対してユーザ追加を行う時の問題で、プライベートキーコンテナが作成できていないか、コンテナに対するアクセス権限がない可能性があります。この場合は、こちらを参項にしてください。