Also mein Programm ist ein Stenographie-Programm, es fügt ein Bild in ein anderes Bild, und ich versuche, die Daten vor dem Einfügen in das Titelbild zu verschlüsseln. Die meisten Verschlüsselungsmodule erwarten jedoch Zeichenfolgen, und ich versuche, ganze Zahlen zu übergeben.Ist es möglich ganze Zahlen zu verschlüsseln?
Ich habe versucht, zu String zu konvertieren und dann zu verschlüsseln, aber die Verschlüsselung ist voll von Sonderzeichen und Buchstaben, so dass die Konvertierung zurück in Integer zum Einfügen unmöglich ist.
Wer weiß, ob ich irgendwie eine ganze Zahl verschlüsseln kann? Es muss nicht sehr sicher sein.
Ich versuche, die Verschlüsselung hier hinzuzufügen:
for i in range(0,3):
#verify we have reached the end of our hidden file
if count >= len(Stringbits):
#convert the bits to their rgb value and appened them
for rgbValue in pixelList:
pixelnumbers1 = int(''.join(str(b) for b in rgbValue), 2)
#print pixelnumbers1
rgb_Array.append(pixelnumbers1)
pixels[x, y] = (rgb_Array[0], rgb_Array[1], rgb_Array[2])
print "Completed"
return imageObject.save(output)
Ich habe versucht, pixelnumbers1
pixels[x, y]
erfordert eine ganze Zahl..
Unten ist der Rest des Codes in-Fall:
def write(mainimage, secret, output):
#string contains the header, data and length in binary
Stringbits = dcimage.createString(secret)
imageObject = Image.open(mainimage).convert('RGB')
imageWidth, imageHeight = imageObject.size
pixels = imageObject.load()
rgbDecimal_Array = []
rgb_Array = []
count = 0
#loop through each pixel
for x in range (imageWidth):
for y in range (imageHeight):
r,g,b = pixels[x,y]
#convert each pixel into an 8 bit representation
redPixel = list(bin(r)[2:].zfill(8))
greenPixel = list(bin(g)[2:].zfill(8))
bluePixel = list(bin(b)[2:].zfill(8))
pixelList = [redPixel, greenPixel, bluePixel]
#for each of rgb
for i in range(0,3):
#verify we have reached the end of our hidden file
if count >= len(Stringbits):
#convert the bits to their rgb value and appened them
for rgbValue in pixelList:
pixelnumbers1 = int(''.join(str(b) for b in rgbValue), 2)
#print pixelnumbers1
rgb_Array.append(pixelnumbers1)
pixels[x, y] = (rgb_Array[0], rgb_Array[1], rgb_Array[2])
print "Completed"
return imageObject.save(output)
#If we haven't rached the end of the file, store a bit
else:
pixelList[i][7] = Stringbits[count]
count+=1
pixels[x, y] = dcimage.getPixel(pixelList)
Die meisten Verschlüsselungssysteme arbeiten mit beliebigen binären Daten, Strings oder beidem. "Integer" ist kein Konzept, das sie verarbeiten können, da das Format für Ganzzahlen von System zu System stark variiert. Sie können Ihre Ganzzahlen immer in Strings konvertieren, verschlüsseln und dann einbinden. Verschlüsselte Daten sind oft rohe Binärdateien, und für die Strings ist eine Codierung mit Base64 oder ähnlichem erforderlich. – tadman
Ganzzahlen, Zeichenfolgen usw. sind nur Interpretationen von Binärwerten. Wenn Sie einen Typ verschlüsseln können, können Sie alle tun. –
@tadman was meinst du mit "backen es in"? –