Python Caesar Cipher Program With No Key












1














I would like some help with figuring out the shift in a caesar cipher program, when no shift has been specified.



My current program:



def Decode():
ALPHABET = 'abcdefghijklmnopqrstuvwxyz'
data =
string = input("Please enter the string you wish to decode.n")
shift = int(input("Enter the key. (Number of shifts used when encoding original word.)n"))
for i in string:
if i.strip() and i in ALPHABET:
data.append(ALPHABET[(ALPHABET.index(i) - shift) % 26])
else:
data.append(i)
output = ''.join(data)
return (output)


How can I turn this program into one that prompts for a string to decode and a plain-text word that appears in the text (decoded string) and uses them to figure out the key in the caesar cipher shift?



For example: If the encoded string is: khoor zruog and the plain-text word is: hello, The program should work out the rotation was 3 and the decoded string is 'hello world'



This must be done without the ord or char functions.










share|improve this question
























  • Brute force (try them all), maybe. There are only 26 variations.
    – Johnny Mopp
    Nov 19 '18 at 18:30










  • Write a function that does the shift shift(text, number). Then iterate through for i in range(26), calling shift with i as number for each. Then you can just check word in shift(text, i) for each to see which keys have your word in the output. The other option would be frequency analysis to guess which letters are which based on which are the most common in english.
    – Patrick Haugh
    Nov 19 '18 at 18:31


















1














I would like some help with figuring out the shift in a caesar cipher program, when no shift has been specified.



My current program:



def Decode():
ALPHABET = 'abcdefghijklmnopqrstuvwxyz'
data =
string = input("Please enter the string you wish to decode.n")
shift = int(input("Enter the key. (Number of shifts used when encoding original word.)n"))
for i in string:
if i.strip() and i in ALPHABET:
data.append(ALPHABET[(ALPHABET.index(i) - shift) % 26])
else:
data.append(i)
output = ''.join(data)
return (output)


How can I turn this program into one that prompts for a string to decode and a plain-text word that appears in the text (decoded string) and uses them to figure out the key in the caesar cipher shift?



For example: If the encoded string is: khoor zruog and the plain-text word is: hello, The program should work out the rotation was 3 and the decoded string is 'hello world'



This must be done without the ord or char functions.










share|improve this question
























  • Brute force (try them all), maybe. There are only 26 variations.
    – Johnny Mopp
    Nov 19 '18 at 18:30










  • Write a function that does the shift shift(text, number). Then iterate through for i in range(26), calling shift with i as number for each. Then you can just check word in shift(text, i) for each to see which keys have your word in the output. The other option would be frequency analysis to guess which letters are which based on which are the most common in english.
    – Patrick Haugh
    Nov 19 '18 at 18:31
















1












1








1







I would like some help with figuring out the shift in a caesar cipher program, when no shift has been specified.



My current program:



def Decode():
ALPHABET = 'abcdefghijklmnopqrstuvwxyz'
data =
string = input("Please enter the string you wish to decode.n")
shift = int(input("Enter the key. (Number of shifts used when encoding original word.)n"))
for i in string:
if i.strip() and i in ALPHABET:
data.append(ALPHABET[(ALPHABET.index(i) - shift) % 26])
else:
data.append(i)
output = ''.join(data)
return (output)


How can I turn this program into one that prompts for a string to decode and a plain-text word that appears in the text (decoded string) and uses them to figure out the key in the caesar cipher shift?



For example: If the encoded string is: khoor zruog and the plain-text word is: hello, The program should work out the rotation was 3 and the decoded string is 'hello world'



This must be done without the ord or char functions.










share|improve this question















I would like some help with figuring out the shift in a caesar cipher program, when no shift has been specified.



My current program:



def Decode():
ALPHABET = 'abcdefghijklmnopqrstuvwxyz'
data =
string = input("Please enter the string you wish to decode.n")
shift = int(input("Enter the key. (Number of shifts used when encoding original word.)n"))
for i in string:
if i.strip() and i in ALPHABET:
data.append(ALPHABET[(ALPHABET.index(i) - shift) % 26])
else:
data.append(i)
output = ''.join(data)
return (output)


How can I turn this program into one that prompts for a string to decode and a plain-text word that appears in the text (decoded string) and uses them to figure out the key in the caesar cipher shift?



For example: If the encoded string is: khoor zruog and the plain-text word is: hello, The program should work out the rotation was 3 and the decoded string is 'hello world'



This must be done without the ord or char functions.







python






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 19 '18 at 18:26









Rohit-Pandey

987615




987615










asked Nov 19 '18 at 18:22









JohnathanJohnathan

43




43












  • Brute force (try them all), maybe. There are only 26 variations.
    – Johnny Mopp
    Nov 19 '18 at 18:30










  • Write a function that does the shift shift(text, number). Then iterate through for i in range(26), calling shift with i as number for each. Then you can just check word in shift(text, i) for each to see which keys have your word in the output. The other option would be frequency analysis to guess which letters are which based on which are the most common in english.
    – Patrick Haugh
    Nov 19 '18 at 18:31




















  • Brute force (try them all), maybe. There are only 26 variations.
    – Johnny Mopp
    Nov 19 '18 at 18:30










  • Write a function that does the shift shift(text, number). Then iterate through for i in range(26), calling shift with i as number for each. Then you can just check word in shift(text, i) for each to see which keys have your word in the output. The other option would be frequency analysis to guess which letters are which based on which are the most common in english.
    – Patrick Haugh
    Nov 19 '18 at 18:31


















Brute force (try them all), maybe. There are only 26 variations.
– Johnny Mopp
Nov 19 '18 at 18:30




Brute force (try them all), maybe. There are only 26 variations.
– Johnny Mopp
Nov 19 '18 at 18:30












Write a function that does the shift shift(text, number). Then iterate through for i in range(26), calling shift with i as number for each. Then you can just check word in shift(text, i) for each to see which keys have your word in the output. The other option would be frequency analysis to guess which letters are which based on which are the most common in english.
– Patrick Haugh
Nov 19 '18 at 18:31






Write a function that does the shift shift(text, number). Then iterate through for i in range(26), calling shift with i as number for each. Then you can just check word in shift(text, i) for each to see which keys have your word in the output. The other option would be frequency analysis to guess which letters are which based on which are the most common in english.
– Patrick Haugh
Nov 19 '18 at 18:31














0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53380551%2fpython-caesar-cipher-program-with-no-key%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53380551%2fpython-caesar-cipher-program-with-no-key%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

ts Property 'filter' does not exist on type '{}'

mat-slide-toggle shouldn't change it's state when I click cancel in confirmation window