Py学习  »  Python

如何根据python中的种子生成特定大小的密钥

Chase • 5 年前 • 1357 次点击  

我用的是 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 ,这会引起纪念。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56627
 
1357 次点击  
文章 [ 1 ]  |  最新文章 5 年前