私のプログラムはStenographyプログラムで、画像を別の画像に挿入して、カバー画像に挿入する前にデータを暗号化しようとしています。しかし、ほとんどの暗号化モジュールは文字列を必要とし、整数を渡そうとしています。整数を暗号化することはできますか?
文字列に変換して暗号化しようとしましたが、暗号化に特殊文字と文字が含まれているため、整数に変換することが不可能です。
私は何とか整数を暗号化できますか?それは非常に安全である必要はありません。
私はここに暗号化を追加しようとしています:
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)
私はそれを追加しpixelnumbers1
を暗号化しようとしてきた。しかしpixels[x, y]
は、整数が必要です。あなたはコンピュータが任意のタイプのデータを参照する方法の基本的な誤解を持っている
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)
ほとんどの暗号化システムは、任意のバイナリデータ、文字列、またはその両方で動作します。 「整数」は、整数のフォーマットがシステムによって大きく異なるため、処理できる概念ではありません。あなたはいつもあなたの整数を文字列に変換し、それを暗号化してから焼くことができます。暗号化されたデータは生のバイナリであることが多く、文字列化するにはBase64などでエンコーディングする必要があります。 – tadman
整数、文字列などは、バイナリ値の解釈に過ぎません。 1つのタイプを暗号化できる場合は、それらをすべて実行できます。 –
@tadman「焼く」とはどういう意味ですか? –