Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.10.09
Prihlásený: 25.10.09
Príspevky: 2
Témy: 1
Príspevok NapísalOffline : 25.10.2009 0:49

Mam naprogramovat program podla tychto instrukcii v BlueJ ale nvm sa z toho vymotat...

Cílem domácí úkolu je procvičit si práci s polem - jednorozměrným, případně dvourozměrným.

Vytvořte projekt sifra a v něm rozhraní ISifra s následujícím obsahem:

/*******************************************************************************
* Rozhraní Sifra definuje metody zašifrování a dešifrování vstupního textu.
*
* @author /jméno autora/
* @version 0.00.000, 0.0.2009
*/
public interface Sifra {
/***************************************************************************
* Metoda zašifruje vstupní text.
*
* @param otevrenyText vstupní nezašifrovaný text
* @return zašifrovaný text
*/
public String zasifruj(String otevrenyText);

/***************************************************************************
* Metoda dešifruje vstupní zašifrovaný text.
*
* @param sifrovyText vstupní zašifrovaný text
* @return rozšifrovaný text
*/
public String desifruj(String sifrovyText);

}


Dále vytvořte třídu implementující toto rozhraní a jednu z následujících metod šifrování/dešifrování. Ke třídě je potřeba udělat testovací třídu, která otestuje správné šifrování. Při šifrování mohou být ve vstupním textu velká a malá písmena anglické abecedy, číslice a mezera. Volitelně můžete umožnit ve vstupu i další znaky, např. z české abecedy. Při šifrování se mohou malá písmena převádět na velká, v případě potřeby se vynechají i mezery.
Vytvořit a odevzdat:

* vytvořit projekt sifra,
* vytvořit rozhraní Sifra (kód je uveden výše),
* vytvořit třídu implementující rozhraní Sifra, ve které naprogramujete přidělený typ šifry,
* vytvořit testovací metodu, pomocí které otestujete, zda se správně šifruje a dešifruje.


Rady k řešení:

* zkuste si nejdříve zašifrovat/dešifrovat text na papíře - použijte jiný klíč a jiný vstupní text, než mám zde uveden já,
* udělejte si simulace na papíře,
* používejte pole znaků - char [] abeceda, v některých případech budete potřebovat dvourozměrné pole char [][] abeceda,
* String se na pole znaků převede metodou toCharArray
* podívejte se na řešení Caesarovy šifry


2. Substituční šifra s obrácením abecedy

Vytvořte třídu SubstitucniSifraReverse pro šifrování a dešifrování textu pomocí jednoduché substituční šifry. Principem je tabulka se dvěma řádky. V jednom řádku je napsána abeceda (v našem případě doplněná minimálně o číslice a mezeru). Do druhého řádku tabulky se nejdříve zapíše klíč (v němž se seškrtají opakující se znaky, aby zbyl jen jeden od každého). Pak se od posledního písmene klíče pokračuje dál od konce abecedy s tím, že již použité znaky se vynechají. Při samotném šifrování se písmeno z horního řádku tabulky nahrazuje svým protějškem ze spodního řádku a při dešifrování se postup obrátí. Parametrem konstruktoru třídy bude klíč (např. "krokodyl13"), pro klíč je potřeba vytvořit převodní tabulku:

abcdefghijklmnopqrstuvwxyz 0123456789
KRODYL1398765420 ZXWVUTSQPNMJIHGFECBA

Při šifrování se písmeno "a" nahradí písmenem "K", písmeno "b" písmenem "R", atd. Pro vstupní text "Zaklady programovani" bude výsledný šifrový text následující: PK76KDQN0Z21ZK52UK4I


ak by mal niekto nejaku radu vdaka.


Offline

Užívateľ
Užívateľ
Uloha v JAVE, surne.

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22
Bydlisko: Zilinska Un...
Príspevok NapísalOffline : 25.10.2009 9:17

Blaznis, moja rada studuj, nie je to narocny projekt, ale skor zdlhavy, ak mas vsetko sam spravit, Java ma na sifrovanie svoje vlastne implementacie. Napisal si tam ze substitucna sifra, kedze je to sifra iba na pochopenie technik, nie je na to implementacia, ale to chce len jednoduchy algoritmus, ktory ti bude zamienat tie znaky, na toto urcite vygooglis vela veci.

Hodim ti neaku cast zdrojaku, len pre principialne veci, jedna sa o elektronicky podpis na baze eliptickych kriviek, ale neviem ci je funkcny, este som to riadne nerozbehal. Neviem ani ci ti to pomoze, ale ak ces tak kukni. V jave je na to implementacia "import java.security.*"


Kód:
package testECDSA;



import java.security.*;

import java.io.BufferedInputStream;

import java.io.FileInputStream;

import java.util.*;

import java.math.BigInteger;



import java.math.BigInteger;

import java.security.InvalidAlgorithmParameterException;

import java.security.InvalidKeyException;

import java.security.KeyFactory;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.security.NoSuchProviderException;

import java.security.PublicKey;

import java.security.Security;

import java.security.Signature;

import java.security.SignatureException;

import java.security.interfaces.ECPrivateKey;

import java.security.interfaces.ECPublicKey;

import java.security.spec.ECFieldF2m;

import java.security.spec.ECParameterSpec;

import java.security.spec.ECPoint;

import java.security.spec.ECPublicKeySpec;

import java.security.spec.EllipticCurve;

import java.security.spec.InvalidKeySpecException;

import java.security.spec.ECGenParameterSpec;



public class EDSAmain {



   public EDSAmain() {

      // TODO Auto-generated constructor stub

   }



   public static String PROVIDER_NAME = "BC";



   // x^n + x^e1 + x^e2 + x^e3 + 1
   final static short e1 = 0x0007;
   final static short e2 = 0x0006;
   final static short e3 = 0x0003;

   private final static byte[] data22 = { (byte) 0x11, (byte) 0x22,

         (byte) 0x33, (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77,

         (byte) 0x88, (byte) 0x99, (byte) 0x10, (byte) 0x11, (byte) 0x12,

         (byte) 0x13, (byte) 0x14, (byte) 0x15, (byte) 0x16, (byte) 0x17,

         (byte) 0x18, (byte) 0x19, (byte) 0x20, (byte) 0x21, (byte) 0x22 };

   private static Provider _provider;
   private static byte[] sign_ECDSA(String datafile, ECPrivateKey prvKey,

           String sigAlg) throws Exception {
      Signature sig = Signature.getInstance("ECDSA", "BC");

      sig.initSign(prvKey);
      String alghoritm = sig.getAlgorithm();
      System.out.println("Name alghoritm = " + alghoritm);

      FileInputStream fis = new FileInputStream(datafile);
      byte[] dataBytes = new byte[1024];
      int nread = fis.read(dataBytes);

      while (nread > 0) {

         sig.update(dataBytes, 0, nread);

         nread = fis.read(dataBytes);

      }
      ;
      return sig.sign();
   }

   private static boolean verify_ECDSA(String datafile, ECPublicKey pubKey,

         String sigAlg, byte[] sigbytes) throws Exception {

      Signature sig = Signature.getInstance("ECDSA", "BC");
      sig.initVerify(pubKey);

      FileInputStream fis = new FileInputStream(datafile);
      byte[] dataBytes = new byte[1024];
      int nread = fis.read(dataBytes);

      while (nread > 0) {
         sig.update(dataBytes, 0, nread);
         nread = fis.read(dataBytes);
      }
      ;
      return sig.verify(sigbytes);
   }

   public static void GetProviders() {

      Provider[] prov = Security.getProviders();
      int provLenght = Security.getProviders().length;
      // String strigProv[] = new String[Security.getProviders().length];
      for (int i = 0; i < provLenght; i++) {
         System.out.println("Provider: " + i + ": " + prov[i].toString());
         System.out.println("   --> Info Alg: " + prov[i].getInfo());
      }
   }

   public static void GetAlgorithms(String name) {

      Set<String> stringAlg = Security.getAlgorithms(name);

      String alg = stringAlg.toString();

      System.out.println("Alg (" + name + "): " + alg);
   }

   public static void PrintAlgorithms(){

   System.out.println("\n");
      GetAlgorithms("Signature");
      GetAlgorithms("MessageDigest");
      GetAlgorithms("Cipher");
      GetAlgorithms("Mac");
      GetAlgorithms("KeyStore");
      GetAlgorithms("KeyPair");
      GetAlgorithms("KeyFactory");
      GetAlgorithms("AlgorithmParameters");
      GetAlgorithms("KeyPairGenerator");   

   }

   
   // private ECPublicKey my;
   private static ECPublicKey _pubkey;
   private static ECPrivateKey _prvkey;

   public static void main(String[] args) throws Exception,
      NoSuchAlgorithmException, InvalidKeyException,
         InvalidAlgorithmParameterException, SignatureException,
         NoSuchProviderException, InvalidKeySpecException {

      // TODO Auto-generated method stub

      // Generate a key-pair

      System.out.println("Start");

      FileInputStream inStream = new FileInputStream("bcprov-ext-jdk16-143.jar");

      BufferedInputStream bis = new BufferedInputStream(inStream);

      _provider.load(inStream);

      //fileProv.load(inStream);

      Security.addProvider(_provider);

      GetProviders();

      PrintAlgorithms();

      //BouncyCastle provider;

      KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ECDSA", "BC");

      ECGenParameterSpec ecSpec = new ECGenParameterSpec("prime192v1");

      keyGen.initialize(ecSpec, new SecureRandom()); // 512 is the keysize.
      KeyPair kp = keyGen.generateKeyPair();
      ECPublicKey pubkey = (ECPublicKey) kp.getPublic();

      ECPrivateKey prvkey = (ECPrivateKey) kp.getPrivate();

      String datafile = "SignatureTest.java";
      byte[] sigbytes = sign_ECDSA(datafile, prvkey, "SHAwithDSA");
      // System.out.println("Signature(in hex):: " +
      // util.byteArray2Hex(sigbytes));
      boolean result = verify_ECDSA(datafile, pubkey, "SHAwithDSA", sigbytes);
      if (result) {
         System.out.println("Signature Ver OK Result = " + result);
      } else {
         System.out.println("Signature Ver Erroro Result = " + result);
      }
      // System.out.println("Signature Verification Result = " + result);
   }
}







_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.10.09
Prihlásený: 25.10.09
Príspevky: 2
Témy: 1
Príspevok Napísal autor témyOffline : 25.10.2009 12:30

heh zas az take zlozite to nie je, ja mam predmet zaklady programovania. ide len o to ze neviem ako navrhnut konstruktor. vzdy ked sa spusti ten program tak sa ma zadat novy kluc ktory vytvori tu novu abecedu ako je zadany ten priklad v pedchazdajucom poste. v datovych atributoch mam vytvorene pole s klasickou abecedou a neviem ako nakodit to aby sa vytvorilo nove pole s modifikovanou abecedou. String kluc treba previest na charArray a pomocou for tam dat tie podmienky ako sa to mas spravit...to je setko co viem ale nakodit to....tazke aspon pre mna


Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. SURNE! Potrebujem pomoct s vylepsenim internetu SURNE!

v Siete

15

504

01.03.2013 14:43

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Úloha

v Assembler, C, C++, Pascal, Java

8

370

28.04.2021 8:36

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler úloha

v Assembler, C, C++, Pascal, Java

0

792

02.02.2008 7:37

HT Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C# uloha

v Technológia .NET

4

668

02.12.2014 13:25

hatto13 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Logicka uloha

v Krčma

13

3447

24.11.2011 0:12

Jeffo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler - úloha

v Assembler, C, C++, Pascal, Java

2

905

22.10.2007 15:04

programator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal uloha

v Assembler, C, C++, Pascal, Java

12

744

26.11.2011 21:59

F3RY Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal uloha

v Assembler, C, C++, Pascal, Java

6

484

03.05.2010 7:42

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal uloha

v Assembler, C, C++, Pascal, Java

1

613

11.11.2009 16:23

feromakovi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Matematicka uloha

v Vzdelanie, štúdium, škola

28

2248

23.05.2008 20:03

Svolo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. databazova uloha

v Databázy

8

630

27.11.2011 17:00

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. python - jednoduchá úloha

v Perl, Python, Ruby, CGI

5

960

08.06.2020 14:50

ux Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Uloha z C++

v Assembler, C, C++, Pascal, Java

14

491

06.04.2014 22:43

Grims Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ úloha ODMENA

v Assembler, C, C++, Pascal, Java

3

439

01.12.2012 11:42

C0lder Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Exel (vzorce) - uloha

v Ostatné programy

1

359

25.05.2013 19:59

IT-Academy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Matice v Jave

v Assembler, C, C++, Pascal, Java

1

480

27.11.2013 8:19

BX Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra