Šifriranje
S sošolcem si želita pošiljati zakodirana sporočila. Sporočila bi
rada zašifrirala tako, da vsako črko premakneta za 3 mesta naprej po abecedi.
Vejice, pike, presledke, številke in ostale znake, pa bi rada pustila tam, kjer so.
Ker si bosta šifrirati in odšifrirati pomagala z računalnikom, bosta uporabljala angleško abecedo.
Napiši program, ki nas vpraša, ali bomo besedilo zakodirali ali odkodirali,
ga prebere in ga odkodira oz. zakodira (odvisno od uporabnikove izbite). Vrstni red
črk v angleški abecedi je: a b c d e f g h i j k l m n o p q r s t u v w x y z.
Komentar:
Lahko zašifriraš tudi presledke, pike, vejice in podobno, najprej pa se moraš seveda
odločiti, s čim boš kaj zamenjal. Lahko bi tud npr. izbrali drug vrstni red črk...
Preberi niz, določi njegovo dolžino, v zanki preberi vsak znak niza in ga spremeni po pravilu.
Napiši metodi - eno za šifriranje in eno za dešifriranje. Pri šifriranju vsak znak premakneš za 3 mesta v desno - pazi na $x,y,z$ in znake, ki niso črke. Pri dešifriranju pa premakneš znak za 3 mesta v levo. Tukaj pa moraš paziti na druge znake. Sam razmisli, na katere.
import javax.swing.JOptionPane;
public class Sifriranje {
public static void main(String[] arg) {
//odlocimo se, ali besedilo šifriramo ali desifriramo
String vhod = JOptionPane.showInputDialog(
"Ce zelis besedilo zasifrirati pritisni 1.\n" +
"Ce zelis besedilo desifrirati pritisni 2.");
int izbira = Integer.parseInt(vhod);
if (izbira == 1) {
//preberemo niz, poklicemo metodo za sifriranje in izpisemo rezultat
vhod = JOptionPane.showInputDialog("Vnesi niz, ki ga hoces sifrirati: ");
String sifriranNiz = sifriraj(vhod);
System.out.println("Sifriran niz je :\"" + sifriranNiz + "\"");
}
else {
//preberemo niz, poklicemo metodo in izpisemo rezultat
vhod = JOptionPane.showInputDialog("Vnesi niz, ki ga hoces desifrirati: ");
String desifriranNiz = desifriraj(vhod);
System.out.println("Originalno besedilo je bilo: \"" + desifriranNiz + "\"");
}
}
public static String sifriraj(String niz) {
String rezultat = "";
//vsako crko zamaknemo za tri mesta, pazimo na robu
for (int i = 0; i < niz.length(); ++i) {
char znak = niz.charAt(i);
if ( (('a' <= znak) && (znak <= 'w')) || (('A' <= znak) && (znak <= 'W')) ) rezultat += (char) (znak + 3);
else if (znak == 'x') rezultat += 'a';
else if (znak == 'y') rezultat += 'b';
else if (znak == 'z') rezultat += 'c';
else if (znak == 'X') rezultat += 'A';
else if (znak == 'Y') rezultat += 'B';
else if (znak == 'Z') rezultat += 'C';
else rezultat += znak;
}
return rezultat;
}
public static String desifriraj(String niz) {
String rezultat = "";
//vsako crko zamaknemo za tri mesta, pazimo na robu
for (int i = 0; i < niz.length(); ++i) {
char znak = niz.charAt(i);
if ( (('d' <= znak) && (znak <= 'z')) || (('D' <= znak) && (znak <= 'Z')) ) rezultat += (char) (znak - 3);
else if (znak == 'a') rezultat += 'x';
else if (znak == 'b') rezultat += 'y';
else if (znak == 'c') rezultat += 'z';
else if (znak == 'A') rezultat += 'X';
else if (znak == 'B') rezultat += 'Y';
else if (znak == 'C') rezultat += 'Z';
else rezultat += znak;
}
return rezultat;
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Sifriranje {
class Sifriranje {
static void Main(string[] args) {
//odlocimo se, ali besedilo šifriramo ali desifriramo
Console.Write(
"Ce zelis besedilo zasifrirati pritisni 1. " +
"Ce zelis besedilo desifrirati pritisni 2. ");
int izbira = Int32.Parse(Console.ReadLine());
if (izbira == 1) {
//preberemo niz, poklicemo metodo za sifriranje in izpisemo rezultat
Console.Write("Vnesi niz, ki ga hoces sifrirati: ");
String vhod = Console.ReadLine();
String sifriranNiz = sifriraj(vhod);
Console.WriteLine("Sifriran niz je :\"" + sifriranNiz + "\"");
}
else {
//preberemo niz, poklicemo metodo in izpisemo rezultat
Console.Write("Vnesi niz, ki ga hoces desifrirati: ");
String vhod = Console.ReadLine();
String desifriranNiz = desifriraj(vhod);
Console.WriteLine("Originalno besedilo je bilo: \"" + desifriranNiz + "\"");
}
Console.ReadKey();
}
public static String sifriraj(String niz) {
String rezultat = "";
//vsako crko zamaknemo za tri mesta, pazimo na robu
for (int i = 0; i < niz.Length; ++i) {
char znak = niz[i];
if ((('a' <= znak) && (znak <= 'w')) || (('A' <= znak) && (znak <= 'W'))) rezultat += (char)(znak + 3);
else if (znak == 'x') rezultat += 'a';
else if (znak == 'y') rezultat += 'b';
else if (znak == 'z') rezultat += 'c';
else if (znak == 'X') rezultat += 'A';
else if (znak == 'Y') rezultat += 'B';
else if (znak == 'Z') rezultat += 'C';
else rezultat += znak;
}
return rezultat;
}
public static String desifriraj(String niz) {
String rezultat = "";
//vsako crko zamaknemo za tri mesta, pazimo na robu
for (int i = 0; i < niz.Length; ++i) {
char znak = niz[i];
if ((('d' <= znak) && (znak <= 'z')) || (('D' <= znak) && (znak <= 'Z'))) rezultat += (char)(znak - 3);
else if (znak == 'a') rezultat += 'x';
else if (znak == 'b') rezultat += 'y';
else if (znak == 'c') rezultat += 'z';
else if (znak == 'A') rezultat += 'X';
else if (znak == 'B') rezultat += 'Y';
else if (znak == 'C') rezultat += 'Z';
else rezultat += znak;
}
return rezultat;
}
}
}
#!C:/Python30/python
#-*-encoding: utf-8 -*-
# -*- coding: latin-1 -*-
'''
Created on 1.7.2009
@author: fajdigap
'''
def sifriraj(niz):
rezultat = ""
#vsako crko zamaknemo za tri mesta, pazimo na robu
for i in range(len(niz)):
znak = niz[i]
if (('a' <= znak) and (znak <= 'w')) or (('A' <= znak) and (znak <= 'W')):
#z ord() spremenimo črko v njeno številsko vrednost
#z chr() spremenimo število nazaj v črko
rezultat = rezultat + chr(ord(znak) + 3)
elif (znak == 'x'):
rezultat = rezultat + 'a'
elif (znak == 'y'):
rezultat = rezultat + 'b'
elif (znak == 'z'):
rezultat = rezultat + 'c'
elif (znak == 'X'):
rezultat = 'rezultat + A'
elif (znak == 'Y'):
rezultat = rezultat + 'B'
elif (znak == 'Z'):
rezultat = rezultat + 'C'
else:
rezultat = rezultat + znak
return rezultat
def desifriraj(niz):
rezultat = ""
#vsako crko zamaknemo za tri mesta, pazimo na robu
for i in range(len(niz)):
znak = niz[i]
if (('d' <= znak) and (znak <= 'z')) or (('D' <= znak) and (znak <= 'Z')):
rezultat = rezultat + chr(ord(znak) - 3)
elif (znak == 'a'):
rezultat = rezultat + 'x'
elif (znak == 'b'):
rezultat = rezultat + 'y'
elif (znak == 'c'):
rezultat = rezultat + 'z'
elif (znak == 'A'):
rezultat = rezultat + 'X'
elif (znak == 'B'):
rezultat = rezultat + 'Y'
elif (znak == 'C'):
rezultat = rezultat + 'Z'
else:
rezultat = rezultat + znak
return rezultat
#odlocimo se, ali besedilo �ifriramo ali desifriramo
izbira= int(input("Ce zelis besedilo zasifrirati pritisni 1.\n ce zelis besedilo desifrirati pritisni 2."))
if izbira == 1:
#preberemo niz, poklicemo metodo za sifriranje in izpisemo rezultat
vhod = input("Vnesi niz, ki ga hoces sifrirati: ")
sifriranNiz = sifriraj(vhod)
print ("Sifriran niz je :\"",sifriranNiz,"\"")
else:
#preberemo niz, poklicemo metodo in izpisemo rezultat
vhod = input("Vnesi niz, ki ga hoces desifrirati: ")
desifriranNiz = desifriraj(vhod)
print ("Originalno besedilo je bilo: \"",desifriranNiz,"\"")