second post here (on the same code). However this time it is a different issue. It only happens every so often but it stumps me as to why. This is the output and error:
Phrase to be encrypted: Hello world
Shift keyword, Word only: Hello
:-) :-) :-) Encrypting Phrase 10%... :-) :-) :-)
:-) :-) :-) Encrypting Phrase 20%... :-) :-) :-)
:-) :-) :-) Encrypting Phrase 30%... :-) :-) :-)
:-) :-) :-) Encrypting Phrase 40%... :-) :-) :-)
:-) :-) :-) Encrypting Phrase 50%... :-) :-) :-)
:-) :-) :-) Encrypting Phrase 60%... :-) :-) :-)
:-) :-) :-) Encrypting Phrase 70%... :-) :-) :-)
:-) :-) :-) Encrypting Phrase 80%... :-) :-) :-)
:-) :-) :-) Encrypting Phrase 90%... :-) :-) :-)
:-) :-) :-) Encrypting Phrase 100%... :-) :-) :-)
:-) :-) :-) Checking Security of encrypted phrase.... :-) :-) :-)
:-) :-) :-) Done! :-) :-) :-)
Here is your Encrypted Phrase:I?j!Qgea:~~[
Traceback (most recent call last):
File "C:\Users\Isaac Scarisbrick\Downloads\Keyword Cipher_1.py", line 60, in <module>
file.write (str(result) + " " + (Cipher))
File "C:\Users\Isaac Scarisbrick\AppData\Local\Programs\Python\Python35-32\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 2-3: character maps to <undefined>
And this is my code:
import random
phrase = input('Phrase to be encrypted: ')
shift_key = input("Shift keyword, Word only: ")
Encryption_Base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,./;:<>?'@#~]}[{=+-_)(*&^%$£!`¬\|"
key_encryption = random.randint(0, 94)
Cipher = ''
for c in shift_key:
if c in Encryption_Base:
Cipher += Encryption_Base[(Encryption_Base.index(c)+key_encryption)%(len(Encryption_Base))]
def Keyword_Encryption(key, phrase):
if len(phrase) > len(key):
while len(phrase) > len(key):
length_to_add = len(phrase) - len(key)
key = key + key[0:length_to_add]
elif len(phrase) < len(key):
while len(phrase) < len(key):
length_to_sub = len(key) - (len(key) - len(phrase))
key = key[0:length_to_sub]
else:
pass
shifted_phrase = ''
for i in range(len(phrase)):
new_letter = (ord(key[i]) - 96) + (ord(phrase[i]) - 96) + 96
if new_letter > 1220:
new_letter = chr(new_letter - 26)
else:
new_letter = chr(new_letter)
shifted_phrase = shifted_phrase + new_letter
return shifted_phrase
result = Keyword_Encryption(Cipher, phrase)
print (" ")
print (":-) " * 3 + "Encrypting Phrase 10%... " + ":-) " * 3)
print (":-) " * 3 + "Encrypting Phrase 20%... " + ":-) " * 3)
print (":-) " * 3 + "Encrypting Phrase 30%... " + ":-) " * 3)
print (":-) " * 3 + "Encrypting Phrase 40%... " + ":-) " * 3)
print (":-) " * 3 + "Encrypting Phrase 50%... " + ":-) " * 3)
print (":-) " * 3 + "Encrypting Phrase 60%... " + ":-) " * 3)
print (":-) " * 3 + "Encrypting Phrase 70%... " + ":-) " * 3)
print (":-) " * 3 + "Encrypting Phrase 80%... " + ":-) " * 3)
print (":-) " * 3 + "Encrypting Phrase 90%... " + ":-) " * 3)
print (":-) " * 3 + "Encrypting Phrase 100%... " + ":-) " * 3)
print (":-) " * 3 + "Checking Security of encrypted phrase.... " + ":-) " * 3)
print (":-) " * 3 + "Done! " + ":-) " * 3)
print (" ")
print ('Here is your Encrypted Phrase:' + (result) + (Cipher))
file = open("Encrypted.txt", "w")
file.write (str(result) + " " + (Cipher))
file.close()
Thank you very much in advance as this is a little extension t the task I have been set in my A level class. There are some snippets of code in here which you may have seen before as there was an encryption program made in python which i took bits from. Thank you for your time :).
EDIT: If this helps it sometimes throws this error too:
Phrase to be encrypted: Hello World
Shift keyword, Word only: Hello
Traceback (most recent call last):
File "C:\Users\Isaac Scarisbrick\Downloads\Keyword Cipher_1.py", line 42, in <module>
result = Keyword_Encryption(Cipher, phrase)
File "C:\Users\Isaac Scarisbrick\Downloads\Keyword Cipher_1.py", line 37, in Keyword_Encryption
new_letter = chr(new_letter)
ValueError: chr() arg not in range(0x110000)
Okay. So anyone else viewing this post knows. All you need to do is put
import codecs
at the top and then when you write the file type
encoding = "utf8"
inside the write parenthesis. Hope I have helped your issue and thank you to all that helped me come to this conclusion :-).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.