Program Kriptografi Caesar Cipher Dengan Java
up vote 0 down vote favorite I have a project due tomorrow and I still can't figure it out. After reading my online textbooks for information on caesar ciphers and encryption, I still have no idea what to do. I am new to programming so most code is out of my league atm, yet this project seems way too advanced for only three weeks into the semester. Here is the instructions: You are tasked with implementing a Caesar Cipher. Your cipher must take two command line arguments, the unencrypted message and k, the amount of the shift. Your code will convert the unencrypted message into an encrypted one by shifting each letter, one by one. It should then print to the screen the new encrypted message. Capital letters should remain capital during the shift and lowercase letters should remain lower case. In addition, make sure spaces are not changed at all. If you can account for other punctuation not being changed, that is considered 'above and beyond'. How would I go about starting this project and could you explain it to someone who has 3 weeks of coding experience. java encryption
this question edited Jan 29 '14 at 21:54 Kara 3,313 8 33 50 asked Jan 28 '14 at 22:18 Gxfire 12 2 closed as too broad by ProgramFOX, donfuxx, Kevin Panko, Jubobs, mustaccio Nov 18 '14 at 20:11 Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question.If this question can be reworded to fit the rules in the help center, please edit the question.
Kriptografi dengan Java ( metode caesar cipher ) Salah satu kriptografi yang paling tua dan paling sederhana adalah kriptogtafi Caesar menurut sejarah, ini adalah cara Julius Caesar mengirimkan surat cinta kepada kekasihnya Cleopatra. Dalam kriptografi Caesar, maka setiap huruf akan dituliskan dalam huruf lain hasil pergeseran 3 buah.
Answersup vote 2 down vote Step 1 Create your alphabet. char[] alphabet = {'A', 'B', 'C', .. , 'X', 'Y', 'Z'};
Step 2 Shift your plaintext. Assume that args[0] is your original message, and args[1] is your shift, as passed in from the command line. char[] plaintext = args[0].toCharArray();
int shift = args[1];
Fate stay night visual novel download android. for(int i = 0; i < plaintext.length; i++) {
for(int j = 0; j < alphabet.length; j++) {
if(alphabet[j] plaintext[i]) {
plaintext[i] = alphabet[(j + shift) % alphabet.length];
}
}
}
Step 3 Put your shifted char array back into a string and output the answer. String ciphertext = new String(plaintext);
System.out.println(ciphertext);
this answer answered Jan 28 '14 at 22:35 Rainbolt 2,478 8 28
Recommend:encryption - Java: Caesar Cipher won't println
ve been working on this for hours and am at a wall. Here is the code: import java.util.Scanner;public class caesartwo {public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
String originalText;
i
u're probably not going to get a lot of full answers. But here's some general guidance: 1 - Spaces are mentioned. So you need to take your input as a single string and then break it down (split) into an array of words. This will be the master array you scroll through, when this loop is done, your program is done. 2 - Now you need to take the elements of you array (which are the individual words) and process them by each letter. You need to loop through the characters of each word and apply the shift (k) 3 - Once thats complete, you need to 're-assemble' your phrase but adding a space after each word in your master array. Output that to the screen as your 'encrypted' message.Gravity Falls Caesar Cipher
this answer answered Jan 28 '14 at 22:33 DMS 1,840 12 55 102 up vote 1 down vote You will need to look at: Scanner class to read arguments in from the command line java.lang.String class to turn a String of characters into separate character array elements incrementing and decrementing characters to add 3 to encrypt or subtract 3 to de-crypt. See this tutorial on incrementing characters: https://stackoverflow.com/questions/2899301/how-do-i-increment-a-variable-to-the-next-or-previous-letter-in-the-alphabet-in This is a tough project for a beginning class. Check out this small program I made to show how to increment a character from the lowercase letter a to the lowercase letter b.
public class alphabet {
public static void main(String[] args) {
char a = 'a';
System.out.println('a currently equals: ' + a);
System.out.println('++a now equals: ' + (++a));
}
}
this answer answered Jan 28 '14 at 22:36 user_loser 487 1 7 20
this answer edited Nov 18 '14 at 18:42 Jubobs 22.9k 12 58 92 answered Jan 28 '14 at 22:34 cyber-monk 3,855 5 21 36 Not the answer you're looking for? Browse other questions tagged java encryption or ask your own question.
Recommend:encryption - java caesar cipher code
key ! here is my code public class CaesarCipher{ public static final String ALPHABET = 'abcdefghijklmnopqrstuvwxyz'; public static String encrypt(String plainText, int shiftKey) { plainText = plainText.toLowerCase();
Hey I'm making a simple caesar cipher in Java using the formula [x-> (x+shift-1) mod 127 + 1] I want to have my encrypted text to have the ASCII characters except the control characters(i.e from 32-127). How can I avoid the control characters from 0-31 applying in the encrypted text. Thank you.
7 Answers
How about something like this:
Admittedly this treats 127 as a non-control character, which it isn't.. you may wish to tweak it to keep the range as [32, 126].
Map your characters from [32.127] to [0.95], do a mod 95+1
and map the result back to [32.127].
Usually cipher text is base64 encoded, base16 (hex) also works well. Base64 is used most often for cipher text because it takes up less space than hex, hex is most commonly used for message digests. In the java.util.prefs.Base64 library you will find byteArrayToBase64() and base64ToByteArray().
On a side note you should NEVER write your own encryption algorithm for security reasons, you should be using a block cipher or stream cipher. I hope this is for fun!
there! Is there any way to consider the whole range of characters? For example, 'á', 'é', 'ö', 'ñ', and not consider ' ' (the [Space])? (For example, my String is 'Hello World', and the standard result is 'Khoor#Zruog'; I want to erase that '#', so the result would be 'KhoorZruog')
I'm sure my answer is in this piece of code:
.. But I've tried some things, and the didn't work :S So, I'll wait for your answers :D See you!
Why not try
for(int i = 0; i < length; i++){char c = chars[i]if(Character.isLetter(c)){int x = c - 32;x = (x + shift) % 96;chars[i] = (char) (x+32);}}