1

ファイルを暗号化および復号化しています。以下はコードです。

暗号コード

void InformationWriter::writeContacts(System::String ^phone, System::String ^email)
{
        //Write the file
        StreamWriter ^originalTextWriter = gcnew StreamWriter("contacts.dat",false);
        originalTextWriter->WriteLine(phone);
        originalTextWriter->WriteLine(email);
        originalTextWriter->Close();


        //Encrypt the file
        FileStream ^fileWriter = gcnew FileStream("contacts2.dat",FileMode::Create,FileAccess::Write);


        DESCryptoServiceProvider ^crypto = gcnew DESCryptoServiceProvider();

        crypto->Key = ASCIIEncoding::ASCII->GetBytes("Intru235");
        crypto->IV = ASCIIEncoding::ASCII->GetBytes("Intru235");

        CryptoStream ^cStream = gcnew CryptoStream(fileWriter,crypto->CreateEncryptor(),CryptoStreamMode::Write);


        //array<System::Byte>^ phoneBytes = ASCIIEncoding::ASCII->GetBytes(phone);
        FileStream ^input = gcnew FileStream("contacts.dat",FileMode::Open); //Open the file to be encrypted
        int data = 0;

        while((data=input->ReadByte()!=-1))
        {
            cStream->WriteByte((System::Byte)data);
        }

        input->Close();
        cStream->Close();
        fileWriter->Close();

        System::Windows::Forms::MessageBox::Show("Data Saved");



}

復号化コード

void InformationReader::readInformation() { System::String ^password = "Intru235";

FileStream ^stream = gcnew FileStream("contacts2.dat",FileMode::Open,FileAccess::Read);

array<System::Byte>^data = File::ReadAllBytes("contacts2.dat");
System::Windows::Forms::MessageBox::Show(System::Text::Encoding::Default->GetString(data));

DESCryptoServiceProvider ^crypto = gcnew DESCryptoServiceProvider();
crypto->Key = ASCIIEncoding::ASCII->GetBytes(password);
crypto->IV = ASCIIEncoding::ASCII->GetBytes(password);

CryptoStream ^crypStream = gcnew CryptoStream(stream,crypto->CreateDecryptor(),CryptoStreamMode::Read);

StreamReader ^reader = gcnew StreamReader(crypStream);
phoneNumber = reader->ReadLine();
email = reader->ReadLine();

crypStream->Close();
reader->Close();
}

ファイルの書き込みは正常に機能しますが、読み取りには問題があります。読んでいると、空行しか出てこない!行が空白(スペース)であるため、プログラムが「何か」を読み取ったことがわかります。

この復号化または何かで何が間違っていますか?

アップデート

上記の復号化コードは編集されています。今、バイトをバイトとして読み取ろうとしていますが、それらをテキストとして表示すると(以下のコードを使用)、次のようにしか取得できません

System::Windows::Forms::MessageBox::Show(System::Text::Encoding::Default->GetString(data));

ここに画像の説明を入力

4

1 に答える 1