Forum: C++ Kryptering mm

Forum huvudsida -> Programmering -> C++ Kryptering mm

Sidor: 1

Till botten

kosyer 12:45 - 6:e Maj 2009 | Post #1
Medlem
Inlägg: 2


Skicka PM
Hejsan!

Håller på att bygga ett simpelt program och behöver lite hjälp. Det är så att jag ska föra in text i programmet, tex vad heter du? sen ska den ta detta kryptera det och sedan skicka ut det till en fil i krypterad form så det inte kan läsas av andra.
Denna koden har jag hittat på nätet som tar innehållet från en fil och sedan krypterar och skickar ut till en annan fil. Men det jag vill göra är att programmet ska ta text från en variabel och sedan kryptera och föra ut det i en fil. Någon som vet hur det skulle kunna se ut? Kan betala för att få hjälp me dettaSmiley

  1. #include <iostream>
  2. #include <fstream>
  3. #include <conio.h>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. int answer = 1;
  10. int fileSize;
  11. char temp;
  12. string line;
  13. int lineCount = 0;
  14. int key1 = 123123; // Speciell Nyckel för krypteringen
  15. int key2 = 123123; // Speciell Nyckel för krypteringen
  16.  
  17.  
  18. ifstream read;
  19.  
  20. read.open("Files/input.txt");
  21. if(read.is_open())
  22. {
  23. read.seekg(0,ios::end);
  24. fileSize = read.tellg();
  25. read.seekg(0,ios::beg);
  26.  
  27. while(getline(read, line))
  28. {
  29. lineCount++;
  30. }
  31.  
  32. read.clear();
  33. }
  34.  
  35. char message[(fileSize+1)-lineCount];
  36.  
  37. if(read.is_open())
  38. {
  39. read.seekg(0);
  40. for(int i = 0; i < (fileSize+1)-lineCount; i++)
  41. {
  42. read.get(message[i]);
  43. }
  44. }
  45. read.close();
  46.  
  47.  
  48. if(key1 % 256 == 0)
  49. key1 = 13;
  50. if(key2 % 256 == 0)
  51. key2 = 19;
  52.  
  53. if(answer == 1)
  54. {
  55. ofstream write;
  56. write.open("Files/output.txt");
  57. write.seekp(0);
  58. for(int t = 0; t < (fileSize+1)-lineCount; t++)
  59. {
  60. if(t % 2 == 0)
  61. write.put(message[t]+int(3*(key1+key2)));
  62. else
  63. write.put(message[t]+int(2*key1*key2));
  64. }
  65. write.close();
  66. }
  67. }





Nissebosselasse 10:47 - 7:e Maj 2009 | Post #2
Medlem
Inlägg: 490


Skicka PM
För det första: ta inte bara kod från nätet om du inte förstår hur det är uppbyggt. Du lär dig mer genom att bygga programmet från början själv (du kan ju t.ex. ha deras kod uppe som referens).

För det andra: för att lösa problemet måste du kunna följande saker i C++: läsa text från användaren, kryptera (vilken metod? hur pass säkert måste det vara? bör du använda ett externt bibliotek?), öppna och skriva till en fil, bland annat.
Om du är osäker på någon av de här punkten, tycker jag du först ska sätta dig ner och skriva små program som var för sig klarar av de olika punkterna, tills du känner att du kan skriva ett helt program som kombinerar allt detta.

-------------------------
http://pushingcows.se
Gula Nallen



kosyer 12:04 - 7:e Maj 2009 | Post #3
Medlem
Inlägg: 2


Skicka PM
Jag förstår ju hur koden är uppbyggd. Men som sagt istället för att ta texten från en fil ska den tas från variable. Men jag vet inte var jag sak börja bara. Men tack iaf.




Nissebosselasse 09:28 - 9:e Maj 2009 | Post #4
Medlem
Inlägg: 490


Skicka PM
Okej, då återstår den andra delen av mitt förra inlägg: vet du hur du skriver de enskilda delarna (läsa från användare, skriva till fil)?

-------------------------
http://pushingcows.se
Gula Nallen



EvilToaster 15:44 - 11:a Maj 2009 | Post #5
Medlem
Inlägg: 5


Skicka PM
Vilket är det mest säkra (enligt er själva) sättet att kryptera text i c++

och vilket är det mest simpla sättet att kryptera text i c++???

Gör inget ifall du knäcker den sista genom brute-force






Vitdom 18:06 - 11:a Maj 2009 | Post #6
Medlem
Inlägg: 71


Skicka PM
    Citat av EvilToaster:
Vilket är det mest säkra (enligt er själva) sättet att kryptera text i c++

och vilket är det mest simpla sättet att kryptera text i c++???

Gör inget ifall du knäcker den sista genom brute-force


Det mest säkra skulle nog enligt mig vara att man krypterar text med ett hashat lösenord flera gånger.

Det mest simpla sättet(alltså inte det mest "osäkra") är nog att addera/subtrahera 1 till alla teckenvärden.

-------------------------



Senast redigerad 18:06 - 11:a Maj 2009


jockepockee 18:33 - 1:a Juni 2009 | Post #7
Medlem
Inlägg: 192


Skicka PM
ett lösenord hashat flera är säkert och fungerar bra. detta funkar dock inte så bra om du vill "överföra" information. eller liknande. då man inte kan dehasha lösenordet på något sätt. (enda lösningen då är brute-force som lär ta väldigt lång tid om det är hashat flera gånger) krypteringsalgoritmer som bluefish fungerar bra för överföring och likande där man är i behov av att kunna veta vad som står bakom krypteringen utan att vem som helst ska kunna göra det.

-------------------------



Senast redigerad 18:33 - 1:a Juni 2009


GregerW 21:12 - 7:e Juni 2009 | Post #8
Medlem
Inlägg: 16


Skicka PM
Hur kan jag få rad 61 & rad 63 att visa utskrift på skärmen?



-------------------------
-----------------------------
MVH
std::cout <<"Greger";



Vitdom 08:30 - 8:e Juni 2009 | Post #9
Medlem
Inlägg: 71


Skicka PM
Du gör såhär..

Precis efter koden som skriver till filen:
if(t % 2 == 0)
    write.put(message[t]+int(3*(key1+key2)));
else
    write.put(message[t]+int(2*key1*key2));

skriver du:
if(t % 2 == 0)
    cout.put(message[t]+int(3*(key1+key2)));
else
    cout.put(message[t]+int(2*key1*key2));


eller mer kompakt:
cout.put(t % 2?message[t]+int(2*key1*key2):message[t]+int(3*(key1+key2)));


-------------------------





GregerW 09:59 - 8:e Juni 2009 | Post #10
Medlem
Inlägg: 16


Skicka PM
Tack Vitdom

Jag skrev i prg.
cout << (message[t]+int(3*(key1+key2)));
Men det gav helt annan utskrift.

Med din rad så fungerade det bättre.

-------------------------
-----------------------------
MVH
std::cout <<"Greger";

Senast redigerad 16:05 - 15:e Juni 2009


GregerW 10:49 - 8:e Juni 2009 | Post #11
Medlem
Inlägg: 16


Skicka PM
Hej, skulle någon kunna förklara för mig vad dessa rader gör, och % vad är så speciellt med denna tecken.
När används %?

if(key1 % 256 == 0)
key1 = 13;

if(key2 % 256 == 0)
key2 = 19;

Tackar på förhand.

-------------------------
-----------------------------
MVH
std::cout <<"Greger";



kode 11:41 - 8:e Juni 2009 | Post #12
Medlem
Inlägg: 45


Skicka PM
% ger dig resten vid en heltalsdivision.




Vitdom 12:11 - 8:e Juni 2009 | Post #13
Medlem
Inlägg: 71


Skicka PM
Precis som kode sa, % (modulo operatorn) ger dig resten vid heltalsdivision.

T.ex. 7 % 3 = 1 för att
7 / 3 ?^ 2
2
  • 3 = 6 (2 gånger 3 = 6)
7 - 6 = 1

Om man vill skulle man ju kunna definera ett makro för modulo:

#define mod(x, y) (x) - (int(x) / int(y)
  • (y))



Men hur kompilatorn översätter % operatorn till maskinkod beror på kompilatorn och koden. T.ex. skulle min kompilator översätta

if(x % 2)
cout << "X är udda!";
else
cout << "X är jämt!";

till

and    $1, eax
test    eax, eax
je    L2
; Skriv ut X är udda!
L2:
; Skriv ut X är jämt!

-------------------------



Senast redigerad 12:13 - 8:e Juni 2009


GregerW 17:32 - 8:e Juni 2009 | Post #14
Medlem
Inlägg: 16


Skicka PM
Tack än en gång , för den fina förklaringen, det börjar ljusna nu.

-------------------------
-----------------------------
MVH
std::cout <<"Greger";



Sidor: 1

Forum huvudsida -> Programmering -> C++ Kryptering mm
Atom feed

Du får inte posta i den här tråden | Till toppen