jak zrobić, hasło z cyfr na słowo

3

Mam takie coś napisane i chcę, żeby moje hasło nie było cyfrą od 0 do 256, tylko słowem np. 4programmers.
Kod:

            if (Convert.ToInt32(textBox1.Text) > 256)
            {
                MessageBox.Show("Za duże hasło!");
                return;
            }
            for (int i = 0; i < textBox1.Text.Length; i++)
            {
                if (!Char.IsDigit(textBox1.Text, i))
                {
                    MessageBox.Show("Hasło musi się składać tylko z cyfr!");
                    return;
                }
            }
 

Wie ktoś jak to przerobić i mi pomoże to rozwiązać?

0
if (TextBox1.Text.Equals("4programmers"))

?

0

Ale ja chce dowolne hasło wpisać. Nie tylko 4programers, ale też inne np. forum.

0

Możesz jaśniej?

0

Chcesz by to co zostanie wpisane do textboxa1 było hasłem typu string? To czemu daje to jako int?

0

Chce, żeby moim hasłem, był wyraz, a nie liczba od 0 do 256.

0
string prawidloweHaslo = "cycki";
if (textBox1.Text == prawidloweHaslo)
  MessageBox.Show("Odgadles haslo");
else
  MessageBox.Show("I dupa")
0

Lipa. Zamieszczam kod programu może coś więcej będzie wiadomo.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication11
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string plik = "";
        string plik_za = "";
        private byte k = 30;

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Wszystkie Pliki | *.*";
            openFileDialog.FilterIndex = 2;
            openFileDialog.RestoreDirectory = true;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                this.textBox1.Text = openFileDialog.FileName;
                plik = openFileDialog.FileName;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {

            string passwords = "";
            if (textBox2.Text == passwords)
            {
            }
            for (int i = 0; i < textBox2.Text.Length; i++)
            {
                if (!Char.IsLetter(textBox2.Text, i))
                {
                    MessageBox.Show("Numer może zawierać tylko cyfry!");
                    return;
                }
            }
            // Koniec opcji hasła od 0 do 100!
            k = Convert.ToByte(textBox2.Text);
            plik_za = plik.Remove(plik.Length - 4, 4) + "_szyfuj.*.*";
            if (File.Exists(plik))
            {
                Encode(plik);
            }
        }


        private void Encode(string FilePath)
        {
            byte[] buffer = File.ReadAllBytes(FilePath);
            for (int i = 0; i < buffer.Length; i++)
            {
                buffer[i] ^= k;
            }
            string ext = FilePath.Remove(0, FilePath.Length - 4);
            FilePath = FilePath.Remove(FilePath.Length - 4, 4);
            FilePath += "_szyfuj" + ext;
            BinaryWriter w = new BinaryWriter(File.Open(FilePath, FileMode.OpenOrCreate));
            try { w.Write(buffer); }
            finally { w.Close(); }
        }

    }
}

Problem jeszcze nie został rozwiązany. :(

0

Mimo wszystko dalej nie rozumiem co Ty chcesz osiągnąć, bo nigdzie nie opisałeś co dokładnie ten program ma robić.

0

Chcę, żeby moim hasłem był wyraz, a nie cyfra. I nie mam pojęcia jak to przerobić. :(

0

Co ci nie pasuje w kodzie kuBArka?

0

Wywala mi błąd: Nieprawidłowy format wyjścia pliku.

0
Bluenight2010 napisał(a)

Chcę, żeby moim hasłem był wyraz, a nie cyfra. I nie mam pojęcia jak to przerobić. :(

To ustawiasz sobie jakiś string z hasłem, po czym porównujesz go z danymi wprowadzonymi do textBox'a. Jeśli któreś znaki są inne to hasło nie pasuje, w czym problem? Jak chcesz sprawdzić czy podane hasło nie zawiera cyfr, to analogicznie sprawdzasz czy dany znak jest inny niż znak ze zbioru 0-9.

0

Chcę, żeby moim hasłem był wyraz, a nie cyfra. I nie mam pojęcia jak to przerobić.

Wystarczy sprawdzać czy wpisany tekst nie zawiera spacji.
allocer, cyfry są chyba zdaniem autora dozwolone, jako przykład hasła podał "4programmers".

0

Moim hasłem ma być wyraz, czyli może być to np. programmers, 4programmers, forum, najlepsze-forum, forum2012. Chodzi głównie o to, żeby hasłem nie były cyfry od 0 do 256. Tylko ten wyraz lub wyraz+cyfra/y.

I nie wiem jak ten problem załatwić. :(

0

To kubArek Ci pokazał jak takie coś zrobić.
Załóżmy, że nie masz domyślnego hasła - wtedy po prostu sprawdzasz czy tekst wprowadzony do textBox'a nie jest liczbą/cyfrą. Aby to zrobić, możesz liniowo sprawdzać kolejne znaki w podanym tekście - jeśli cały tekst będzie się składał tylko ze znaków 0-9, to oznacza, że jest liczbą. W czym problem?

0

Nie wiem jak to napisać.
Nie wiem jak to ma wyglądać.
Nie wiem co mam wstawić w kodzie i co zmienić. :(

0

Pomoże mi ktoś rozwiązać ten problem?

0

Może przeczytaj jakiś kurs

0
Bluenight2010 napisał(a)

Pomoże mi ktoś rozwiązać ten problem?

Choćby tak (przerób sobie na WinForms i sprawdź czy się kompiluje bo pisane od ręki):

 
        static void Main(string[] args)
        {
            string haslo = Console.ReadLine();
            List<char>lista=new List<char>();

            for (int i = 0; i < haslo.Length; i++)
            {
                if(char.IsNumber(haslo[i]))
                    lista.Add(haslo[i]);
            }

            if(lista.Count==haslo.Length) Console.WriteLine("Same liczby");
            else Console.WriteLine("Dobre haslo");

            Console.ReadLine();
        }    
0

I to najlepiej kurs zadawania pytań.

0

@allocer:

        static void Main(string[] args)
        {
            string password = Console.ReadLine();

            if (!Enumerable.All(password, char.IsNumber))
            {
                Console.WriteLine("Good.");
            }
            else
            {
                Console.WriteLine("Shit.");
            }
        }
0

Nadal nie umiem tego zrobić. :( Nie działa mi.

0
Bluenight2010 napisał(a)

Nadal nie umiem tego zrobić. :( Nie działa mi.

No to nie będziesz tego miał.

0

Ale ja muszę mieć to zrobione.

0

No to masz problem

0

Przez was osiwieje i umrę na zawał.

Obecnie mam coś takiego, ale nie działa jak trza:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication11
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        string plik = "";
        string plik_za = "";
        private byte k = 30;

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Wszystkie Pliki | *.*";
            openFileDialog.FilterIndex = 2;
            openFileDialog.RestoreDirectory = true;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                this.textBox1.Text = openFileDialog.FileName;
                plik = openFileDialog.FileName;
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {

            string passwords = textBox2.Text;

            if (textBox2.Text == passwords)
            {
                MessageBox.Show("1");
            }
            else
            {
                MessageBox.Show("2");
            }

            for (int i = 0; i < textBox2.Text.Length; i++)
            {
                if (!Char.IsLetter(textBox2.Text, i))
                {
                    MessageBox.Show("Numer może zawierać tylko cyfry!");
                    return;
                }
            }
            k = Convert.ToByte(textBox2.Text);
            plik_za = plik.Remove(plik.Length - 4, 4) + "_odkod.*.*";
            if (File.Exists(plik))
            {
                Decode(plik);
            }
        }

        private void Decode(string FilePath)
        {
            byte[] buffer = File.ReadAllBytes(FilePath);
            for (int i = 0; i < buffer.Length; i++)
            {
                buffer[i] ^= k;
            }
            string ext = FilePath.Remove(0, FilePath.Length - 4);
            FilePath = FilePath.Remove(FilePath.Length - 4, 4);
            FilePath += "_odkod" + ext;
            BinaryWriter w = new BinaryWriter(File.Open(FilePath, FileMode.OpenOrCreate));
            try { w.Write(buffer); }
            finally { w.Close(); }
        }
    }
}
1
Bluenight2010 napisał(a)

Ale ja muszę mieć to zrobione.

Coś Ci uświadomię: Ty nic nie musisz. Jeśli nie potrafisz przepisać JEDNEJ linijki i zmienić nazwy JEDNEJ zmiennej to nie musisz nawet oddychać, świat na tym nie straci.

Zresztą pieprzyć, zlituję się. Weź, ciemniaku jeden, wypisz listę kroków, które ma wykonywać ten problematyczny fragment, razem z przykładowymi danymi dla przypadków poprawnych i niepoprawnych. Inaczej nie dojdziemy do porozumienia.

0

Dostałeś dwa, a nawet trzy kody, w których masz wszystko co chciałeś. Pozostała Ci kwestia pomyślenia i zmienienia raptem 2-3 rzeczy, ale jak widać to za dużo. Daj sobie spokój bo i tak nic z tego nie będzie.

0

No to tak:
KROK1: W załączniku jest cały projekt, w którym jest kodowanie i dekodowanie plików.
KROK2: Ten fragment kodu, chciałem, zmodyfikować tak, żeby hasłem nie była cyfra od 0 do 256, tylko wyraz np. 4programmers, forum2012, *FORum12 itd.. (w haśle nie może myć wyrazów ze spacją, czyli np. bolek i lolek)

            if (Convert.ToInt32(textBox2.Text) > 256)
            {
                MessageBox.Show("Zbyt duża hasło!");
                return;
            }
            for (int i = 0; i < textBox2.Text.Length; i++)
            {
                if (!Char.IsLetter(textBox2.Text, i))
                {
                    MessageBox.Show("Numer może zawierać tylko cyfry!");
                    return;
                }
            }
            k = Convert.ToByte(textBox2.Text);

KROK3: I tyle w zasadzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1