【发布时间】:2018-03-18 18:12:21
【问题描述】:
所以我的程序是一个速记程序,它将一个图像插入到另一个图像中,我试图在将数据插入封面图像之前对其进行加密。但是,大多数加密模块都需要字符串,我正在尝试传递整数。
我尝试转换为字符串然后加密,但加密中充满了特殊字符和字母,因此转换回整数以进行插入是不可能的。
有人知道我能否以某种方式加密一个整数吗?它不必非常安全。
我正在尝试在此处添加加密:
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 “烘烤”是什么意思?
-
假设您说的是steganography 而不是stenography,“烘焙”是将加密数据嵌入另一个介质的过程。
标签: python encryption steganography