Ceci est un segment de code que j'ai pour régler le masterpassword:Exception Cryptographic: entrée n'est pas un bloc complet
private void button1_Click(object sender, EventArgs e)
{
string current = textBox1.Text;
string newPass = textBox2.Text;
string confirmed = textBox3.Text;
string massPass = "winxp.pma";
if (File.Exists(massPass))
{
byte[] cipertext = File.ReadAllBytes(massPass);
string decoded;
if(Encryptor.TryDecrypt(current, cipertext, out decoded))
{
FileStream fs = new FileStream(massPass, FileMode.Truncate, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
if(newPass == confirmed)
{
byte[] newCipher = Encryptor.Encrypt(newPass, newPass);
string writeIt = System.Text.Encoding.UTF8.GetString(newCipher);
sw.Write(writeIt);
sw.Flush();
sw.Close();
fs.Close();
this.Close();
}
else
{
MessageBox.Show("New password do not match.", "Error", MessageBoxButtons.OK);
}
}
}
else
{
FileStream fs = new FileStream(massPass, FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
if (newPass == confirmed)
{
byte[] ciphertext = Encryptor.Encrypt(newPass, newPass);
string writeIt = System.Text.Encoding.UTF8.GetString(ciphertext);
sw.Write(ciphertext);
sw.Flush();
sw.Close();
fs.Close();
this.Close();
}
Retour sur la principale forme, j'utilise la méthode TryDecrypt de la manière suivante:
private void S_Click(object sender, EventArgs e)
{
byte[] ciphertext = File.ReadAllBytes(massPass);
string decoded;
if (Encryptor.TryDecrypt(textBox1.Text, ciphertext, out decoded))
{
accountGroupsBox.Enabled = true;
addNewPasswordToolStripMenuItem.Enabled = true;
label2.Text = "Interface Unlocked";
}
else
{
MessageBox.Show("Incorrect Master Password.", "Authentication Error", MessageBoxButtons.OK);
}
Cependant, comme je l'ai mentionné, il ne reviendra pas vrai .... Je parie quelque chose à voir avec la façon dont je manipuler les FileStreams de l'autre forme, mais je ne comprends pas assez ce qui est passe sous le capot pour déterminer si je le fais correctement.
Êtes-vous même vérifier des réponses à vos autres messages sur d'autres sites? :) –
Oh, je n'avais pas vérifié le débogage depuis plusieurs jours ... J'ai supposé que c'était un spectacle relativement inactif. Ce code que vous avez posté là-bas .... Je voudrais changer les flux de mémoire pour être FileStreams à mes fins correctes? – Stev0
Oui, c'est généralement le cas. Il y a beaucoup de gens qui cherchent de l'aide pour les devoirs de la part de quelques généreux qui répondent régulièrement (3-4 personnes dont moi-même). Tout par amour cependant. ;) - Un passage à l'utilisation d'un flux mémoire rendra ce processus beaucoup plus rapide et plus sûr car vous n'aurez pas à travailler avec des fichiers temporaires et tous les problèmes que cela peut entraîner. Pour résumer ce que j'ai mentionné lors du débogage, assurez-vous de fermer le CryptoStream avant d'accepter les données cryptées. –