我用的是
pycryptodome
模块及其AES功能来加密某些数据。但是我需要为
AEScipher
我以后可以找回的。该项目以图像的形式存储所有私有数据(包括密钥)。基本上我们使用一个像素数组并使用
PIL
并使用
getdata()
功能。
要创建图像:-
array = numpy.array(pixels, dtype = numpy.uint8)
new_image = Image.fromarray(array)
new_image.save('user_key.png')
整数元组列表
[[(...), (...)], [(...), (...)], ...]
这是带钥匙的物体
要从图像中获取密钥,请执行以下操作:-
im = Image.open(image_path)
return list(im.getdata())
AES key
,假设我用
Random.get_random_bytes(AES.key_size)
从加密模块。
如何生成加密安全密钥,同时使用
pixels
,比如一个整数元组?
编辑:-
要详细说明,pixels对象是
整数元组列表
像素对象的第0个索引
可能看起来像这样-
[(69, 147, 245), (120, 212, 198), ...]
这个
key_list
我指的对象实际上是
list(im.getdata())
. 这是一个
整数元组列表
,每个元组包含3个整数,每个整数的范围为0到255。这看起来像这样-
[(69, 147, 245), (120, 212, 198)....]
关键字列表第0个索引
(69, 147, 245)
我需要将AES密钥存储在与这些值相同的位置。理想情况下,我希望将AES密钥存储为3个从0到255的整数的元组。所以是的,我需要将AES密钥转换为元组,然后将其存储在
.
另一个关键细节是,元组包含3个整数,因为它们分别表示用于创建图像的RGB值。我相信元组可以用4个整数来表示RGBA值。这样就解决了3的倍数问题。
但还有一个问题。每个元组
实际上是通过
[i for i in itertools.product(range(256), repeat=3)]
. 为了生成一个由4个整数而不是3组成的元组,我必须更改
repeat=3
到
repeat=4
,这会引起纪念。